首先安裝失敗重試插件:
pip install pytest-rerunfailures
有三種方式來使用失敗重試
第一種:在測試方法上使用@pytest.mark.flsky()裝飾器
@pytest.mark.flaky(reruns=1) #失敗重跑一次 @pytest.mark.flaky(reruns=1, reruns_delay=2) #失敗重跑一次,在每次開跑前會等到2s
一個簡單的例子如下:
#投資成功 @pytest.mark.flaky(reruns=1) def test_invest_success(self, common_driver): WelcomePage(common_driver).swipe_screen() WelcomePage(common_driver).click_experience_now() LoginPage(common_driver).click_register_login() LoginPage(common_driver).input_phone(login_success_data["phone"]) LoginPage(common_driver).input_pwd(login_success_data["pwd"]) IndexPage(common_driver).click_later() InvestPage(common_driver).enter_invest() before_invest_money = InvestPage(common_driver).get_user_left_money() InvestPage(common_driver).input_invest_money(invest_success_data["money"]) InvestPage(common_driver).invest_now() InvestPage(common_driver).click_confirm() InvestPage(common_driver).click_back() IndexPage(common_driver).click_me() after_invest_money = UserInfoPage(common_driver).get_user_left_money() assert float(before_invest_money) == float(after_invest_money) + invest_success_data["check"]
第二種:在命令行使用
pytest test_invest.py::TestInvest::test_invest_success --reruns 1 #失敗重跑一次
pytest test_invest.py::TestInvest::test_invest_success --reruns 1 --reruns-delay 2 #失敗重跑一次,在每次開跑前會等到2s
一個簡單的例子如下:
第三種:在main.py中使用
#失敗重跑一次 pytest.main([ "--reruns=1", "-m", "fail", "--junitxml", f"{test_reports}/autotest_report_{cur_time}.xml", "--html", f"{test_reports}/autotest_report_{cur_time}.html"] ) #失敗重跑一次,在每次開跑前會等待2s pytest.main([ "--reruns=1", "--reruns-delay=2", "-m", "fail", "--junitxml", f"{test_reports}/autotest_report_{cur_time}.xml", "--html", f"{test_reports}/autotest_report_{cur_time}.html"] )