天天看點

pytest失敗重試插件pytest-rerunfailures

首先安裝失敗重試插件:

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      

一個簡單的例子如下:

pytest失敗重試插件pytest-rerunfailures
#失敗重跑一次
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"]
)