pytest:断言测试没有输出
pytest: assert no output from tests
是否可以断言使用 pytest 的测试 运行 不会从 Python 或 C stdout 输出任何内容?理想情况下,这将是全局的,以及一些手动注释的排除项。
我已经阅读了 pytest capturing docs 并且可以在每个测试中使用该系统,但我希望避免在修改所有测试的同时到处传递捕获夹具。
(运行ning doctests 隐式检查了这一点,因为它根据每个示例行的预期检查输出,但我想在单元测试的任何意外输出上出错)
自动使用的夹具可以在拆卸时检查 capsys 的内容:
# 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 == "ok\n"
是否可以断言使用 pytest 的测试 运行 不会从 Python 或 C stdout 输出任何内容?理想情况下,这将是全局的,以及一些手动注释的排除项。
我已经阅读了 pytest capturing docs 并且可以在每个测试中使用该系统,但我希望避免在修改所有测试的同时到处传递捕获夹具。
(运行ning doctests 隐式检查了这一点,因为它根据每个示例行的预期检查输出,但我想在单元测试的任何意外输出上出错)
自动使用的夹具可以在拆卸时检查 capsys 的内容:
# 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 == "ok\n"