在之前的帖子 ( https://testerhome.com/topics/29456 ) 中,有大佬提到过这样的一个重跑建议:

全部跑完之后记录下来哪些用例时跑失败的,然后再重新跑一遍失败的用例。重跑和第一次执行的内容是毫无关联的。

今天想将其实现一下,但是发现 pytest 的 pytest-rerunfailures 插件中的 reruns 设置之后,是当一个用例失败之后就马上重跑,而 pytest-repeat插件中的 count 设置之后是不管是否失败都会重跑。

发现了 pytest-rerunfailures 中有--lf可以实现重跑上次失败的用例,所以想试试,我是这样设置的:

login_tests_json_report = "./outputs/reports"
login_tests_html_report = "./outputs/reports/login"
pytest.main(["-m login", f"--alluredir={login_tests_json_report}"])
pytest.main(["-m login", "--lf"])
os.system(f"allure generate {login_tests_json_report} -o {login_tests_html_report} --clean")
os.system(f"allure serve {login_tests_json_report}")

但是我发现 allure 报告中只有重跑后的结果记录,即只有pytest.main(["-m login", "--lf"])运行后的报告,retries 中没有相关的信息,并且我没有添加 “ --clean-alluredir” 之类的参数。

报告如下:

请问,如何实现既能 “跑完所有用例之后再将失败的用例重跑一次” 又能 在 allure 报告的 history 或者 retries 中显示呢?还是说其实--lf 可以实现但是我用的不对?


↙↙↙阅读原文可查看相关链接,并与作者交流