Используя pytest, я могу сделать так, чтобы один модульный тест провалился, если тело теста записало что-нибудь на стандартный вывод или стандартный поток ошибок, например:
Код: Выделить всё
import pytest
def test_no_stray_output(capsys: pytest.CaptureFixture[str]) -> None:
# actual test logic here
out, err = capsys.readouterr()
assert out == ""
assert err == ""
Я ищу способ сделать это или эквивалентный автоматически для всех тестов в наборе тестов. (Это тестирование библиотеки, которая вообще никогда не должна касаться стандартных потоков, но она поддерживается небрежно, и я продолжаю находить в ее недрах проверенные отладочные операторы печати, а обработка stdout и stderr по умолчанию в pytest маскирует это.)
В идеале я бы также хотел, чтобы все доступы для чтения к sys.stdin и fd 0 на уровне ОС выбрасывали исключения, но это не так важно.
Подробнее здесь:
https://stackoverflow.com/questions/799 ... -or-stderr