pytest的一些實用外掛程式實踐

2022-05-18 02:49:38 字數 2571 閱讀 5770

1.多重校驗 pytest-assume

簡單的校驗assert,雖然可以寫多個assert

def test_add1(self):

assert add(2,3)==5

assert add(1,3)==3

assert add(2,5)==7

由於第二個斷言失敗,那麼下面的斷言就不會執行。

所以如果需要多個斷言,都執行就需要第三方外掛程式 pytest-assume

安裝命令:

pip install pytest-assume
示例:

def test_add2(self):

pytest.assume(add(1,2)==3)

pytest.assume(add(1,4)==3)

pytest.assume(add(2,2)==4)

這邊即使第二個斷言失敗了,第三個斷言還是會繼續執行。

2.設定執行順序 pytest-ordering

對於一些上下文依賴的,有時候可能需要設定一些特定執行順序,pytest的ordering外掛程式,就很好的解決了這個問題

安裝命令

pip  install  pytest-ordering
示例指令碼如下:

def test_order1():

print ("first test")

assert true

def test_order2():

print ("second test")

assert true

沒有加上ordering,執行順序是 test_order1----test_order2,如圖:

加上順序之後

@pytest.mark.run(order=2)

def test_order1():

print ("first test")

assert true

@pytest.mark.run(order=1)

def test_order2():

print ("second test")

assert true

結果如下:

5.失敗重跑 pytest-rerunfailures

pip install pytest-rerunfailures
示例指令碼

class testrerun():

@pytest.mark.run(order=2)

@pytest.mark.flaky(reruns=5)

def test_random(self):

print(1)

pytest.assume((random.randint(0,4)+3)==5)

@pytest.mark.run(order=3)

def test_random2(self):

'''不加mark 命令列中

pytest -sq demo_rerun.py --reruns 5

:return:

'''print(2)

pytest.assume((random.randint(0,4)+3)==5)

@pytest.mark.run(order=1)

@pytest.mark.flaky(reruns=6, reruns_delay=2)

def test_example(self):

print(3)

assert random.choice([true, false])

執行命令:

pytest -sq demo_rerun.py --reruns 5

pytest -sq demo_rerun.py --reruns 5 --reruns-delay 1

二者的區別是,下面在每次重跑之前會等待 1 s

同時也可以在指令碼中指定定義重跑的次數,這個時候在執行的時候,就無需加上 --reruns 這個引數

對比可以看出,執行順序發生了變化

pytest 一些常用外掛程式

用例失敗後自動重新執行 pytest rerunfailures,使用方法 安裝外掛程式 pip install pytest rerunfailures pytest test x.py reruns n 失敗後重執行的次數 重複執行測試 pytest repeat,使用方法 安裝外掛程式 pip...

一些實用的模板

1 floyd判最小環 注 包含基本的floyd演算法。最好寫的單源最短路徑演算法。但時間複雜度o n 3 n 1000基本就用不了了。void floyd 3 dijkstra 迪傑斯特拉 演算法 單源最短路徑演算法 基本思路 每次確定到起點距離最短且距離尚未確定的點的dis,並對其所有鄰邊進行鬆...

一些好用的外掛程式

atom one dark theme 好看的主題 atom one light theme 護眼主題 bookmarks 標記,方便查詢 指令 shift cmd k bracket pair colorizer 2 相鄰括號顏色不同,方便查詢 作用域範圍,可以與任何主題使用 code runne...