Как проверить распечатки?
Вы хотите написать unittest
-cases для такой функции:
def test_me(a):
for b in c:
print do_something(a,b)
Сначала я подумал о том, чтобы просто собирать выходные данные do_something
в строке и затем возвращать ее, чтобы печатать и тестировать весь вывод вместе. Но это не всегда удобно, потому что такие петли могут привести к тому, что ваша буферная строка станет очень большой, в зависимости от обстоятельств. Итак, что вы можете сделать, чтобы проверить результат, когда он напечатан и не возвращен?
Ответы
Ответ 1
print
печатает на sys.stdout
, который вы можете переназначить на свой собственный объект, если вы пожелает. Единственное, что нужно вашему объекту - это функция write
, которая принимает один строковый аргумент.
С Python 2.6 вы также можете изменить print
как функцию, а не на конструкцию языка, добавив from __future__ import print_function
в начало вашего script. Таким образом вы можете переопределить print
своей собственной функцией.