如何找出测试被跳过的原因?
我在一个大型且陌生的代码库里工作。测试用的是unittest,由pytest运行。我尝试基于现有测试添加一个新测试,但它被跳过了:
Running pytest with args: ['-p', 'vscode_pytest', '-vv', '--rootdir=/Users/roysmith/dev/pywikibot', '/Users/roysmith/dev/pywikibot/core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser']
============================= test session starts ==============================
platform darwin -- Python 3.11.8, pytest-9.0.3, pluggy-1.6.0 -- /Users/roysmith/dev/pywikibot/venv/bin/python
cachedir: .pytest_cache
rootdir: /Users/roysmith/dev/pywikibot
configfile: core/tox.ini
collecting ... collected 1 item
core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser SKIPPED [100%]
============================== 1 skipped in 0.94s ==============================
Finished running tests!
测试框架中散布着一些特殊的机制,用来有条件地跳过测试,使用unittest.SkipTest(),但我不知道到底触发的是哪一个。有没有办法让pytest说清楚发生了什么?skipTest() 通常会附带一个原因并打印出来,但这次没有。
解决方案
你可以让 pytest 在无论它以何种执行方式跳过时都打印跳过的原因,方法是使用 rs 标志:
pytest -rs /Users/roysmith/dev/pywikibot/core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser
你会得到类似这样的结果: SKIPPED(1) ...原因...
请参考官方文档:
https://docs.pytest.org/en/stable/how-to/output.html#detailed-summary-report
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。