Pytest學習筆記9-失敗重跑

RockChe發表於2021-07-03

前言

在進行自動化測試的過程中,我們一定會有這樣的需求:希望失敗的用例可以自動重跑

在pytest中,提供了pytest-rerunfailures外掛可以實現自動重跑的效果

外掛安裝

pip命令安裝

pip install pytest-rerunfailures

使用例項

重新執行所有失敗的用例

如果需要把所有失敗的用例都重新執行,使用 --reruns 命令,並且制定要執行的最大次數

舉個?:

class TestDemo(object):
    def setup_class(self):
        print("執行setup_class")

    def teardown_class(self):
        print("執行teardown_class")

    def test_case1(self):
        print("執行測試用例1")
        assert 1 + 1 == 3

    def test_case2(self):
        print("執行測試用例2")
        assert 1 + 3 == 6

    def test_case3(self):
        print("執行測試用例3")
        assert 1 + 3 == 4

使用命令pytest --reruns 2 -s 執行,結果如下

image-20210703221946118

可以看到,case1和case2被重新執行了2次

如果希望在每次重新執行之間加上間隔時間,可以使用 --reruns-delay 命令列選項,指定下次測試重新開始之前等待的秒數

pytest --reruns 2 --reruns-delay 5 -s,代表自動重跑2次,每次間隔5s

重新執行指定的用例

如果我們在測試時,只希望在某一條測試用例失敗後重新執行該如何處理呢

可以使用flaky裝飾器 @pytest.mark.flaky(reruns=, reruns_delay=)

引數說明

  • reruns 重跑次數
  • reruns_delay 重新執行的等待時間

舉個?

import pytest


@pytest.mark.flaky(reruns=2, reruns_delay=3)
def test_case1():
    print("執行測試用例1")
    assert 1 + 1 == 3


def test_case2():
    print("執行測試用例2")
    assert 1 + 3 == 6


def test_case3():
    print("執行測試用例3")
    assert 1 + 3 == 4

執行結果如下:

image-20210703223905568

相關文章