pytest:断言测试没有输出



是否可以断言使用pytest运行的测试不会从Python或C stdout输出任何内容?理想情况下,这将是全局的,以及一些手动注释的排除。

我已经阅读了pytest捕获文档,可以在每次测试中使用该系统,但我希望避免在修改所有测试的同时,到处传递捕获夹具。

(运行doctests会隐式地检查这一点,因为它会根据每个示例行的预期检查输出,但我希望在单元测试的任何意外输出上出错(

自动使用夹具可以在拆卸时检查绞盘的内容物:

# in conftest.py
import pytest
@pytest.fixture(autouse=True)
def no_output(capsys):
yield
out, err = capsys.readouterr()
if out or err:
pytest.fail(f"output captured: {out + err}")

这仍然允许您的测试套件具有一些显式确实期望输出的测试,因为当no_output固定装置处于拆卸状态时,capsys将已经被消耗掉。

# test_example.py
def test_no_output():
pass
def test_output_allowed(capsys):
print("ok")
out, err = capsys.readouterr()
assert not err
assert out == "okn"

最新更新