Я знаю, что можно отключить захват 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через тестируемую функцию (а также через любые вложенные функции), но я хотел бы знать, есть ли лучший способ, который не изменяет структуру функции (ей).