如何用Pytest找出执行特定代码行的测试用例?
找出覆盖特定代码行的pytest用例并单独运行
方法一:借助pytest-cov生成测试覆盖映射
- 安装依赖
pip install pytest-cov
- 生成包含测试用例与代码行映射的覆盖报告
运行测试时指定生成JSON格式报告,并开启测试上下文记录:
pytest --cov=你的模块名 --cov-report=json:coverage.json --cov-context=test
- 解析JSON报告定位测试用例
编写简单脚本解析coverage.json,找到目标代码行对应的测试用例。比如目标文件是src/foo.py,行号为50,示例脚本如下:
import json with open("coverage.json", "r") as f: cov_data = json.load(f) target_file = "src/foo.py" target_line = 50 # 遍历文件找到目标 if target_file in cov_data["files"]: lines_info = cov_data["files"][target_file]["lines"] # 找到目标行对应的测试上下文 for line_num, contexts in lines_info.items(): if int(line_num) == target_line: print("覆盖该行的测试用例:") for ctx in contexts: print(f"- {ctx}")
- 单独运行目标测试用例
拿到测试用例名称后,直接运行:
pytest 测试文件路径::测试类名::测试函数名
方法二:临时插桩快速定位(适合小项目)
在目标代码行添加一行打印语句:
# 目标代码行所在位置 print("DEBUG: 触发了目标行,当前测试用例:", __name__)
然后运行所有测试,查看控制台输出,找到打印该信息的测试用例名称,之后单独运行该测试即可。
注意:测试完成后记得移除插桩代码。
内容的提问来源于stack exchange,提问作者Simon Walker
相关产品推荐
相关产品推荐

