pytest 常用外掛程式

2022-06-09 06:48:10 字數 3698 閱讀 7980

雖然pytest給我們提供了很多的功能,但是有些功能還是沒有,而pytest的外掛程式可以滿足我們的需求,比如用例失敗重跑,統計**覆蓋率等等功能。

pytest-sugar外掛程式可以輸出彩色字元。它也能在執行過程中顯示錯誤和失敗用例的堆疊回溯資訊,而且還能在螢幕右側顯示進度條。

安裝

pip install pytest-sugar

使用外掛程式後

使用pytest-sugar外掛程式後,通過的測試用例後面會打勾,失敗的測試用例後面會打叉號,而且螢幕右側會顯示進度條。

失敗重跑,這個外掛程式非常實用,比如做自動化的時候,有些介面由於網路的原因,不穩定,就要多次執行。

pip install pytest-rerunfailures

import

pytest

from time import

sleep

import

random

deftest_demo1():

assert

true

deftest_demo2():

a=random.randint(1,5)

assert a==3

deftest_demo3():

assert true

使用--reruns num就可以自定義失敗後重跑幾次,上面的**,不出意外的話跑五次會有成功的

說明:如果第一次成功就沒有rr,直接顯示通√(勾),也不顯示下面的3 reren。如果五次都失敗,也不顯示×(叉)

如果你希望在乙個會話中重複執行測試,則可以使用pytest-repeat外掛程式。如果測試總是斷斷續續的失敗,那麼這個外掛程式很有用

pip install pytest-repeat
有了pytest-repeat外掛程式後,可以使用--count來指定每個測試用例執行多次

上面的結果是乙個執行三次之後再執行下乙個用例三次,但有時我們想乙個用例執行完一次後執行下乙個,在執行第二次。這時候就要加上--repeat-scope引數。

--repeat-scope的引數有function(預設引數)、class、module、session

session:重複整個測試會話,既所有的測試用例執行一次,然後再執行第二次

使用--repeat-scope=session重複執行整個會話用例,先來看下**

在函式裡使用裝飾器實現多次執行

在來修改一下**

import

pytest

deftest_demo1():

assert

true

@pytest.mark.repeat(4) #

新增repeat裝飾器

deftest_demo2():

assert

true

deftest_demo3():

assert true

在來執行一次

可以通過加引數-x來實現有失敗就停止執行。-x的用法在之前也講過。

官網:並行執行測試。通常測試都是依次執行的,因為有些資源以此只能被乙個測試用例訪問。如果你的測試不需要訪問共享資源,那麼就可以通過並行執行來提速。pytest-xdist外掛程式可以實現這個功能。你可以指定處理器程序數目來同時執行多個測試,甚至可以把測試放在多台機器上執行

pip install pytest-xdist

import

pytest

from time import

sleep

@pytest.mark.parametrize('x

', list(range(10)))

deftest_demo(x):

sleep(1)

assert true

上面的**如果我們正常執行,最少也需要10s才能執行結束

pytest-xdist外掛程式的-n numprocesses選項可以指定執行測試的處理器程序數,-n auto選項可以自動偵測系統裡的cpu數目。以下是上例在多個處理器上執行的情況

我的cpu是四核的,所以啟動了四個

可以看到,時間比剛才快了很對。我們不能指望有幾個處理器就能快多少倍,因為總有一些額外的開銷,但很多測試場景允許並行測試,如果測試時間較長,就可以大幅節省時間

pytest-xdist外掛程式的功能還有很多,比如把測試全部轉移到另外的機器上執行等。其他的用法可以參考pytest-xdist文件。

自定義啟動多個cpu

pytest -v -n 10 auto test_001
正常情況下,pytest裡的測試是沒有時間限制的。如果測試中涉及會消失的資源,比如web服務,那麼最好為測試加上時間限制

pytest-timeout外掛程式就提供了這個功能,它允許你在命令列指定超時時間。或者直接在測試**中標記超時時間

import

pytest

from time import

sleep

deftest_demo1():

assert

true

deftest_demo2():

sleep(50) #

等待50s

assert

true

deftest_demo3():

assert true

pip install pytest-timeout
也可以把引數加到配置檔案裡

[pytest]

addopts = -rsxx -l -v --tb=short --strict --timeout=5

pytest04 pytest常用外掛程式

02 生成測試報告 外掛程式 安裝 pip install pytest html 生成測試報告 pytest html 測試報告路徑 html03 在pytest.ini中加入報告生成命令 addopts s html test hello.html 直接執行 pytest即可 如果這裡加上了 s...

pytest 一些常用外掛程式

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

五 pytest外掛程式分享

1 關於pytest的外掛程式說明 2.assume外掛程式使用介紹 assume 外掛程式 安裝方法 pip install pytest assume 需要有 python 環境和 pytest 環境 assume assume 外掛程式就是乙個斷言工具,和 pytest 自帶的斷言區別就在於 ...