pytest: как отключить захват stdout только для отдельных строк тестового кода - PullRequest
0 голосов
/ 08 ноября 2019

Я знаю, что можно отключить захват stdout и stderr в pytest с помощью переключателя -s / --capture=no. В качестве альтернативы, можно использовать прибор capsys и метод его отключения при тестировании определенной функции:

def test_disabling_capturing(capsys):
    print("this output is captured")
    with capsys.disabled():
        foo():
    print("this output is also captured")

def foo():
    print("output not captured, going directly to sys.stdout")

Однако захват отключен для всей функции foo(). Что если бы я хотел отключить захват только для определенных строк foo() (для удобства чтения выходного потока при выполнении теста)?

Я знаю, что в качестве аргумента можно передать фиксацию capsysчерез тестируемую функцию (а также через любые вложенные функции), но я хотел бы знать, есть ли лучший способ, который не изменяет структуру функции (ей).

...