pytest使用入門

2021-08-15 07:12:32 字數 2336 閱讀 5905

pytest是第三方開發的乙個python測試模組,可以輕鬆地編寫小型測試,而且可以擴充套件以支援應用程式和庫的複雜功能測試,幫助我們編寫更好的程式。

先在命令列中執行pytest的安裝命令:

$ pip install -u pytest
安裝完成後,檢查是否安裝了正確的版本:

$

pytest--

version

我們從乙個簡單的測試例子開始了解pytest,新建乙個test_sample.py檔案,輸入以下**:

def

inc(x):

return x + 1

deftest_answer

():assert inc(3) == 5

在test_sample.py檔案的目錄下,執行pytest命令,pytest將執行當前目錄及其子目錄下所有名稱為「test_*.py」或「*_test.py」的檔案:

$ pytest
我們使用了assert語句來驗證測試期望值,pytest中有一種斷言反思機制,能智慧型地報告assert表示式的中間值,使我們不必再使用傳統的junit方法。這個測試返回了乙個失敗報告,因為inc(3)沒有返回5,如下圖所示:

使用raises可以幫助我們斷言某些**會引發某個異常,新建乙個test_sy***it.py檔案,輸入以下**:

import pytest

deff

():raise systemexit(1)

deftest_mytest

():with pytest.raises(systemexit):

f()

這樣在出現該異常的時候,這個測試用例也不會標記為失敗,以quiet報告模式執行測試功能:

$ pytest -q test_sy***it.py
這個測試返回了乙個成功報告,如下圖所示:

當我們開發了多個測試時,可能會把它們分組到乙個類中,我們現在可以使用pytest建立乙個包含多個測試的類,新建乙個test_class.py檔案,輸入以下**:

class

testclass

(object):

deftest_one

(self):

x = "this"

assert

'h'in x

deftest_two

(self):

x = "hello"

assert hasattr(x, 'check')

pytest會發現所有「test_*」命名的函式,沒有必要繼承任何東西,我們可以簡單地通過傳遞它的檔名來執行測試:

$ pytest -q test_class.py
第乙個測試通過,第二個測試失敗,我們可以輕鬆地看到斷言中的中間值,以幫助我們了解失敗的原因,如下圖所示:

fixture是pytest中的乙個特性,fixture可以請求任意資源,用文字不太好理解,我們就通過例項來理解吧。首先,通過以下命令可以找出所有pytest內建的fixture:

$

pytest--

fixtures

我們就以tmpdir這個內建的fixture來演示,tmpdir能返回乙個唯一的臨時目錄路徑,新建乙個test_tmpdir.py檔案,輸入以下**:

def

test_needsfiles

(tmpdir):

print (tmpdir)

assert

0

在測試函式的引數中列出tmpdir,pytest將在執行測試函式之前查詢並呼叫fixture工廠來建立資源:

$ pytest -q test_tmpdir.py
在測試執行之前,pytest會建立乙個唯一的,供每個測試呼叫的臨時目錄,如下圖所示:

Pytest框架入門

1.導包 import pytest 2.編寫測試方法 deffun x return x 1 執行測試用例 deftest a print test a assert fun 3 4 斷言 成功 deftest b print test b assert fun 3 5 斷言 失敗 執行 if n...

pytest安裝使用

安裝pytest pip install u pytest 安裝pytest pytest version 檢視版本 在pytest框架中,有如下約束 所有的單測檔名都需要滿足test py格式或 test.py格式。在單測檔案中,可以包含test 開頭的函式,也可以包含test開頭的類。在單測類中...

Pytest使用記錄

參考鏈結 pytest是乙個易用 強大 靈活的功能測試框架,並且相容unittest和nose的測試用例。pip install pytest假設我的專案結構如下圖所示,在專案目錄下專門建立了乙個test資料夾,裡面存放的都是與測試相關的檔案。my project src main.py test ...