如何找出测试被跳过的原因?

编程语言 2026-07-10

我在一个大型且陌生的代码库里工作。测试用的是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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章