如何排查unittest+pytest环境下测试用例被跳过的原因?
让pytest显示unittest SkipTest的跳过原因
当你用pytest执行基于unittest编写的测试时,默认情况下可能不会展示unittest.SkipTest()抛出的跳过原因,不过通过添加pytest的报告参数就能轻松解决这个问题:
1. 临时修改命令行参数
在你的pytest命令中加入-rs参数,它会让pytest在测试结束的摘要部分显示所有被跳过测试的具体原因。如果还想同时查看失败测试的详情,可以用-rxs(其中x代表失败测试,s代表跳过测试)。
修改后的命令参数如下:
['-p', 'vscode_pytest', '-vv', '-rs', '--rootdir=/Users/roysmith/dev/pywikibot', '/Users/roysmith/dev/pywikibot/core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser']
执行后,你应该能在测试结果的摘要里看到类似这样的内容:
============================== 1 skipped in 0.94s ============================== SKIPPED [1] core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser: 这里会显示具体的跳过原因
2. 永久配置(避免每次手动加参数)
如果不想每次执行测试都重复添加-rs,可以在项目的tox.ini或者pytest.ini配置文件中添加默认选项:
[pytest] addopts = -rs
这样后续每次执行pytest时,都会自动展示跳过测试的原因。
补充说明
pytest的-r参数用于控制测试结果摘要的显示内容,常用选项包括:
s: 显示跳过(skipped)测试的原因x: 显示失败(failed)测试的详情f: 显示失败(failed)测试的简洁摘要p: 显示通过(passed)的测试(默认不展示)
内容的提问来源于stack exchange,提问作者Roy Smith
相关产品推荐
相关产品推荐

