使用pytest --collect-only运行时如何上报跳过测试的原因?
pytest 6.2.2版本
--collect-only模式输出测试跳过原因的方法 --collect-only模式默认仅执行测试用例收集逻辑,不会触发pytest的测试结果报告流程,所以常规用于输出跳过原因的-rsx参数在该模式下无法生效,可通过以下两种方案解决:
方案1:搭配详细输出参数(无需额外配置)
直接在命令中添加-v参数即可,兼容pytest 6.2.2版本:
pytest --collect-only -v
该命令会在收集结果的对应行末尾,直接标注每个跳过用例的具体原因。
方案2:自定义钩子实现结构化输出
如果需要统一收集、格式化输出所有跳过用例的原因,可在项目根目录的conftest.py文件中添加如下钩子代码:
def pytest_collection_modifyitems(session, config, items): for item in items: # 处理@pytest.mark.skip装饰的用例 skip_mark = item.get_closest_marker("skip") if skip_mark: reason = skip_mark.kwargs.get("reason", "未配置跳过原因") print(f"[跳过用例] {item.nodeid} | 原因:{reason}") # 处理@pytest.mark.skipif装饰的用例 skipif_mark = item.get_closest_marker("skipif") if skipif_mark and skipif_mark.args[0]: reason = skipif_mark.kwargs.get("reason", "未配置跳过原因") print(f"[跳过用例] {item.nodeid} | 原因:{reason}")
添加完成后直接运行pytest --collect-only,即可在控制台输出所有跳过用例的结构化信息。
注:如果存在模块级别、类级别的跳过逻辑,可以扩展上述钩子适配对应场景。
内容的提问来源于stack exchange,提问作者Billy
相关产品推荐
相关产品推荐

