详细选项无法关闭测试结果打印。但是,
pytest可以通过多种方式进行自定义,包括结果打印。要更改此设置,您将覆盖该
pytest_report_teststatus挂钩。
关闭短字母
创建一个
conftest.py具有以下内容的文件:
import pytestdef pytest_report_teststatus(report): category, short, verbose = '', '', '' if hasattr(report, 'wasxfail'): if report.skipped: category = 'xfailed' verbose = 'xfail' elif report.passed: category = 'xpassed' verbose = ('XPASS', {'yellow': True}) return (category, short, verbose) elif report.when in ('setup', 'teardown'): if report.failed: category = 'error' verbose = 'ERROR' elif report.skipped: category = 'skipped' verbose = 'SKIPPED' return (category, short, verbose) category = report.outcome verbose = category.upper() return (category, short, verbose)现在运行测试将不会打印任何简短的结果字母(
.sxFE)。该代码有点冗长,但是可以处理框架中定义的所有标准结果。
关闭详细的结果
在详细模式下运行时,
pytest输出结果以及测试用例名称:
$ pytest -sv=================================== test session starts ===================================...test_spam.py::test_spam PASSEDtest_spam.py::test_eggs FAILEDtest_spam.py::test_bacon SKIPPEDtest_spam.py::test_foo xfail...
如果您
verbose从上述挂钩隐含中删除了行设置(将其设置为空字符串),
pytest也会以详细模式停止打印结果:
import pytestdef pytest_report_teststatus(report): category, short, verbose = '', '', '' if hasattr(report, 'wasxfail'): if report.skipped: category = 'xfailed' elif report.passed: category = 'xpassed' return (category, short, verbose) elif report.when in ('setup', 'teardown'): if report.failed: category = 'error' elif report.skipped: category = 'skipped' return (category, short, verbose) category = report.outcome return (category, short, verbose)$ pytest -sv=================================== test session starts ===================================...test_spam.py::test_spamtest_spam.py::test_eggstest_spam.py::test_bacontest_spam.py::test_foo...通过命令行开关引入自定义报告模式
下面的示例将
--silent从命令行传递标志时关闭同时打印简短和详细结果的信息:
import pytestdef pytest_addoption(parser): parser.addoption('--silent', action='store_true', default=False)def pytest_report_teststatus(report): category, short, verbose = '', '', '' if not pytest.config.getoption('--silent'): return None if hasattr(report, 'wasxfail'): if report.skipped: category = 'xfailed' elif report.passed: category = 'xpassed' return (category, short, verbose) elif report.when in ('setup', 'teardown'): if report.failed: category = 'error' elif report.skipped: category = 'skipped' return (category, short, verbose) category = report.outcome return (category, short, verbose)


