如何排查unittest+pytest环境下测试用例被跳过的原因?
解决pytest不显示unittest SkipTest跳过原因的方法
方法1:升级日志详细级别
当前你使用了-vv参数,可进一步升级为-vvv(三重详细模式),pytest会输出完整的跳过原因信息。执行命令修改为:
pytest -vvv /Users/roysmith/dev/pywikibot/core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser
方法2:指定回溯输出模式
默认的回溯设置可能隐藏跳过原因,显式设置回溯模式可强制显示相关信息:
pytest -vv --tb=short /Users/roysmith/dev/pywikibot/core/tests/site_tests.py::TestGetParsedPage::test_get_with_default_parser
也可以用--tb=long获取更完整的回溯内容。
方法3:全局搜索SkipTest调用
直接在测试代码目录中搜索所有SkipTest的触发点,排查哪个条件命中了你的测试:
grep -r "SkipTest" /Users/roysmith/dev/pywikibot/core/tests/
找到对应代码后,结合测试上下文判断触发逻辑。
方法4:临时调试SkipTest行为(仅用于排查)
在测试文件开头或项目的conftest.py中添加以下代码,强制打印跳过原因和调用栈:
import unittest import traceback original_skip = unittest.SkipTest def debug_skip(msg=""): print(f"触发SkipTest,原因:{msg}") traceback.print_stack() raise original_skip(msg) unittest.SkipTest = debug_skip
运行测试时就能看到跳过操作的具体调用位置和传入的原因信息。
内容的提问来源于stack exchange,提问作者Roy Smith
相关产品推荐
相关产品推荐

