Вопрос по unit-testing, python, stdout – Как проверить печатные выписки?

17

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

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

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

Error: User Rate Limit Exceededstackoverflow.com/questions/5136611/… Silas Ray
Error: User Rate Limit ExceededyieldError: User Rate Limit Exceeded Tyler Crompton
Error: User Rate Limit Exceeded erikbwork

Ваш Ответ

2   ответа
2

Error: User Rate Limit Exceededunittest.mockError: User Rate Limit ExceededprintError: User Rate Limit Exceeded

from unittest.mock import patch, call

@patch('builtins.print')
def test_print(mocked_print):
    print('foo')
    print()

    assert mocked_print.mock_calls == [call('foo'), call()]
То же самое, другой синтаксис:with unittest.mock.patch('builtins.print') as mocked_print:
12

printError: User Rate Limit Exceededsys.stdoutError: User Rate Limit ExceededwriteError: User Rate Limit Exceeded

Error: User Rate Limit ExceededprintError: User Rate Limit Exceededfrom __future__ import print_functionError: User Rate Limit ExceededprintError: User Rate Limit Exceeded

Похожие вопросы