Pytest框架之命令列引數2

2022-02-26 15:43:01 字數 4166 閱讀 2215

上篇部落格說到命令列執行測試用例的部分引數如何使用?今天將繼續更新其他一些命令選項的使用,和pytest收集測試用例的規則!

--collect-only:羅列出所有當前目錄下所有的測試模組,測試類及測試函式

--tb=style:遮蔽測試用例執行輸出的回溯資訊,可以簡化用例失敗時的輸出資訊。style可以是 on,line,short,具體區別請自行體驗

--lf:當一次用例執行完成後,如果其中存在失敗的測試用例,那麼我們可以使用此命令重新執行失敗的測試用例

我們第一次執行用例,會看到有2個用例失敗

我們使用--lf引數再次執行用例,可以發現只有之前失敗的兩個用例重新執行了一次

--ff:如果上次測試用例出現失敗的用例,當使用--ff後,失敗的測試用例會首先執行,剩餘的用例也會再次執行一次

以上就是命令列執行測試用例時經常使用到的引數,這些引數不僅可以單獨使用,也可以組合一起使用,後期還會涉及到使用fixture時的一些命令,現在不需要了解。你可以使用--help來檢視一些命令幫助資訊!

1)從乙個或者多個目錄開始查詢,你可以在命令列指定檔案或者目錄,如果未指定那麼從當前目錄開始收集用例

2)在該目錄和所有子目錄下遞迴查詢測試模組

3)測試模組是指檔名為test_*.py或者*_test.py的檔案

4)在測試模組中查詢以test_開頭的函式

5)查詢名字以test開頭的類。其中首先篩選掉包含__init__()函式的類,再查詢類中以test_開頭的類方法

現在我們就依次演示pytest搜尋測試用例的過程

首先我們按照以下目錄結構新建乙個專案

每個檔案編寫如下**(我們只是為了驗證規則,所以用例些的很簡單,實際專案不會存在這樣簡單的用例)

test_測試模組1.py

1

#測試函式23

deftest_2():

4assert 1 == 156

7#普通函式

8def

func_2():

9print('

普通函式')

1011

#測試類

12class

testclass_2(object):

1314

#測試函式

15def

test_class_3(self):

16assert 1 == 117#

普通函式

18def

func_class_3(self):

19assert 1 == 1

2021

#普通類

22class

notestclass_2(object):23#

測試函式

24def

test_class_4(self):

25assert 1 == 1

2627

#普通函式

28def

func_class_4(self):

29assert 1 == 1

test_測試模組2.py

1

#測試函式23

deftest_1():45

assert 1==16#

普通函式

7def

func_1():

8print('

普通函式')

910#測試類

11class

testclass_1(object):12#

測試函式

13def

test_class_1(self):

14assert 1==1

1516

#普通函式

17def

func_class_1(self):

18assert 1==119#

普通類20

class

notestclass_1(object):

2122

#測試函式

23def

test_class_2(self):

24assert 1 == 1

2526

#普通函式

27def

func_class_2(self):

28assert 1 == 1

測試用例.py

1

#測試函式

2def

test_one():

3assert 1==145

#普通函式

6def

func():

7assert 1==1

我們現在根據理論分析並結合**,可以大致計算出,從專案根目錄執行用例,應該會執行4條有效測試用例!

我們在專案根目錄下執行pytest --collect-only看下情況,可以發現 搜尋了test_測試模組1和test_測試模組2檔案,幷包括testclass_2和testclass_1類及內部test_class_3和test_class_1 和外部的測試函式test_2,test_1.

d:\pytest搜尋測試用例規則》pytest --collect-only

*************************==== test session starts *************************====

platform win32 -- python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1

rootdir: d:\pytest搜尋測試用例規則, inifile:

collected 4 items

********************==== no tests ran in 0.14 seconds *************************

我們大致已經能看出pytest的搜尋規則,現在們再執行一下所有用例看下 使用命令 pytest -v。可以看出確實只有4個用例被執行了,也就是只識別到了4個用例,根據下面的輸出資訊可以看出每個用例所在的位置

d:\pytest搜尋測試用例規則》pytest -v

*************************==== test session starts *************************====

platform win32 -- python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe

cachedir: .pytest_cache

rootdir: d:\pytest搜尋測試用例規則, inifile:

collected 4 items

測試用例目錄1/test_測試模組1.py::test_2 passed                           [ 25%]

測試用例目錄1/test_測試模組1.py::testclass_2::test_class_3 passed        [ 50%]

測試用例目錄1/test_測試模組2.py::test_1 passed                           [ 75%]

測試用例目錄1/test_測試模組2.py::testclass_1::test_class_1 passed        [100%]

*************************= 4 passed in 0.07 seconds *************************==

大家可以自己試試修改檔案,函式,類名稱,然後執行用例,檢視是否會按照自己的想法執行用例!

ok,通過這兩篇文章,我們大概已經知道如何命名測試模組,測試類,測試函式,並且如何使用簡單的命令列執行測試用例。那麼就趕緊動手試試吧!

命令列 Pytest之命令列執行

基於一套 實現流水線的驗證方案,針對每個流水線傳不同的使用者進行驗證,具體的使用者可以選擇每個集群裡面活躍度比較高使用者來進行測試。正如前面說的,在saas化的模式下,底層服務它是共享的機制,但是每個集群它是不同的,這種不同在於它提供的db層面和計算能力,因此需要被驗證。使用pyhton中的argp...

pytest十二 cmd命令列引數

命令列引數是根據命令列選項將不同的值傳遞給測試函式,比如平常在 cmd 執行 pytest html report.html 這裡面的 html report.html 就是從命令列傳入的引數對應的引數名稱是 html,引數值是 report.html conftest 配置引數 首先需要在 con...

c之命令列引數

執行程式時,可以從命令列傳值給 c 程式。這些值被稱為命令列引數,它們對程式很重要,特別是當您想從外部控制程式,而不是在 內對這些值進行硬編碼時,就顯得尤為重要了。命令列引數是使用 main 函式引數來處理的,其中,argc是指傳入引數的個數,argv是乙個指標陣列,指向傳遞給程式的每個引數。下面是...