在使用 pytest 进行软件测试时,如果某些测试用例上传失败,应当采用哪种方法或命令来重新运行这些失败的测试用例?
考察说明
考查对 pytest 框架中 rerun 失败测试用例机制的掌握情况。
回答思路
- 【回答框架 1】pytest 支持通过 --lf(--last-failed)选项只运行上次失败的用例,该选项会在本地缓存上次的失败结果,执行 pytest --lf 即可重跑失败用例。
- 【回答框架 2】若需要忽略上次运行结果,强制重跑所有用例,可使用 --ff(--failed-first)选项,该选项会先运行上次失败的用例,再运行其余用例。
- 【回答框架 3】对于重试机制,pytest 需要借助第三方插件 pytest-rerunfailures,通过 --reruns N 参数指定失败用例重试次数,并可配合 --reruns-delay 设置重试间隔。
- 【回答框架 4】若希望在上传场景下筛选特定失败用例,可以结合 -k 表达式或节点 ID(如 test_module.py::test_func)精确指定用例进行重跑。
- 【关键点 1】pytest --lf 只重跑上次失败的用例。
- 【关键点 2】pytest --ff 先跑失败用例再跑其余用例。
- 【关键点 3】pytest-rerunfailures 插件支持 --reruns N 重试。
- 【关键点 4】可通过 -k 或节点 ID 精确重跑指定用例。
- 【易错点 1】--lf 依赖缓存,若运行目录变化或缓存被清空则失效。
- 【易错点 2】重试次数过多可能掩盖真实失败原因,需平衡。
- 【易错点 3】插件需额外安装,且与部分 pytest 版本可能存在兼容性问题。