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 ...