Python pytest單元測試框架安裝與執行

2021-10-24 13:27:54 字數 3457 閱讀 1158

摘要1:

摘要2:

摘要3:

摘要4(pytest外掛程式):

pytest是乙個非常成熟的全功能的python測試框架,主要特點有以下幾點:

與安裝其他的python軟體無異,直接使用pip安裝。

pip install -u pytest
安裝完成後,可以驗證安裝的版本:

pytest --version
1)pytest   

會查詢當前目錄及其子目錄下以  test_*.py  或 *_test.py 檔案,找到檔案後,在檔案中找到以  test 開頭函式並執行

1)pytest   somepath

會查詢somepath目錄下以  test_*.py  或 *_test.py 檔案,找到檔案後,在檔案中找到以  test 開頭函式並執行

2)pytest **.py   

執行該檔案中test開頭的函式並執行

3)pytest **.py::test_func

執行指定測試檔案下的測試函式

3)pytest   **.py::classname::test_functionname

執行某個檔案下某個類的某個方法

1)perferences ---->tools  -----> python integrated tools ---->default test runner設定為pytest 。之後直接執行測試用例即可

2)if __name__ =="__main__":

command_line = ["-s","./test_creative_create_card_pic_nobase.py","--alluredir=../result"]

pytest.main(command_line)

1、-k expression

執行某個關鍵字的用例

用例要匹配給出的表示式;使用python的語法,匹配的範圍是檔名、類名、函式名為變數,用and來區分

如下面一段測試用例(檔案實現方式)

# content of test.py

def test_two():

x = "hello"

assert hasattr(x, 'check')

def test_a():

assert 1 == 2

執行pytest時帶-k引數

# 執行當前檔名稱中包含test_a字元的測試用例

pytest -k "test_a" test.py

# 執行當前檔名稱中不包含test_a字元的測試用例

pytest -k "not test_a" test.py

# 執行當前檔名稱中包含 test_a 字元或 test_two 字元的測試用例

pytest -k "test_a or test_two" test.py

如下面一段測試用例(類實現方式)

# content of test.py

class testclass(object):

def test_zne(self):

x = "this"

assert 'h' in x

def test_two(self):

x = "hello"

assert hasattr(x, 'check')

def test_a(self):

assert 1==2

執行pytest時帶-k引數

# 測試類名包含 testclass,並且該測試類中包含 test_a 將被跳過

pytest -k "test and testclass and not test_a" test.py

或者pytest -k "testclass and not test_a" test.py

# 測試類或函式包含 test_a 或 test_two 中的測試將被執行

pytest -k "test_a or test_two"

如下面一段測試用例(類實現方式)

2、-x

遇到執行失敗的用例或錯誤,停止測試

3、--maxfail=num

當錯誤個數到達給定個數,退出測試,這裡就不列舉例項了,結果與-x類似

4、-m markexpr

只能執行有相應標識的測試用例,使用這個引數,測試用例要使用@pytest.mark.marker修飾

如下例項

# content of test.py

class testclass(object):

def test_zne(self):

x = "this"

assert 'h' in x

@pytest.mark.b

def test_two(self):

x = "hello"

assert hasattr(x, 'check')

@pytest.mark.a

def test_a(self):

assert 1 == 2

teste_two使用了@pytest.mark.b來修飾,teste_a使用了@pytest.mark.a來修飾。

# 只執行a標識的用例

pytest –m a test.py

# 如果要執行多個標識的話,用表示式,如下

注意,-m後面不能帶''號(單引號),只能帶""(雙引號),不然識別不到

pytest -m "a or b" # 執行有 a 標識或 b 標識用例

pytest -m "a and not b" # 執行有 a 和沒有 b 標識的用例

5、 -v, --verbose

詳細結果

6、-q, --quiet

極簡結果顯示,簡化控制台的輸出,可以看出輸出資訊和之前不新增-q不資訊不一樣, 下圖中有兩個..點代替了pass結果

7、-s

輸入我們用例中的調式資訊,比如print的列印資訊等,我們在用例中加上一句 print(driver.title),我們再執行一下我們的用例看看,除錯資訊輸出

8、-v

可以輸出用例更加詳細的執行資訊,比如用例所在的檔案及用例名稱等

9、--junit-xml=path

輸出xml檔案格式,在與jenkins做整合時使用

10、 --result-log=path

將最後的結果儲存到本地檔案中

python pytest單元測試框架之介紹

前言 pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。pytest是乙個成熟的全功能的python測試工具,可以幫助你寫出更好的程式,讓我們很方便的編寫測試用例。適合從簡單的單元到複雜的功能測試。有很...

unittest單元測框架

django預設使用python的標準庫unittest編寫測試用例。學習django單元測試之前,先學習下unittest單元測試框架的基本使用。下面實現乙個簡單的單元測試1.簡單的加法和減法功能實現,module.py 如下 encoding utf 8 class calculator doc...

單元測試應該測什麼

單元測試應該全面覆蓋專案開發的 但是依賴的第三方 不應該被測試。凡是非本專案開發的 都可以認為是第三方 比如,我們專案依賴別的部門提供的儲存服務,連線此服務需要使用他們提供的乙個指令碼,而這個指令碼存放在我們的util目錄中。像這個指令碼,就是所謂的第三方 我用下面這段話來說服領導將這個指令碼從測試...