Подтвердить что ты не робот

Как проверить распечатки?

Вы хотите написать unittest -cases для такой функции:

def test_me(a):
    for b in c:
        print do_something(a,b)

Сначала я подумал о том, чтобы просто собирать выходные данные do_something в строке и затем возвращать ее, чтобы печатать и тестировать весь вывод вместе. Но это не всегда удобно, потому что такие петли могут привести к тому, что ваша буферная строка станет очень большой, в зависимости от обстоятельств. Итак, что вы можете сделать, чтобы проверить результат, когда он напечатан и не возвращен?

4b9b3361

Ответ 1

print печатает на sys.stdout, который вы можете переназначить на свой собственный объект, если вы пожелает. Единственное, что нужно вашему объекту - это функция write, которая принимает один строковый аргумент.

С Python 2.6 вы также можете изменить print как функцию, а не на конструкцию языка, добавив from __future__ import print_function в начало вашего script. Таким образом вы можете переопределить print своей собственной функцией.