assert就是斷言,每個測試用例都需要斷言。
與unittest不同,pytest使用的是python自帶的assert關鍵字來進行斷言,大大降低了學習成本。
assert關鍵字後面可以接乙個表示式,只要表示式的最終結果為true,那麼斷言通過,用例執行成功,否則用例執行失敗。
pytest的用例失敗描述非常詳盡,一目了人。考慮下面的例子
#content of test_assert1.py
def f():
return 3
def test_function():
assert f() == 4
執行上面的用例
$ pytest test_assert1.py可以很明顯的看出,pytest給出的錯誤提示是:f()的值是3,也就是實際結果是3,而預期結果是4,3不等於4,因此斷言未通過,用例失敗。*****== test session starts *****===
platform linux – python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y rootdir: $regendoc_tmpdir,
inifile: collected 1 item
test_assert1.py f
*****== failures *****===
_______ test_function ________
def test_function():
assert f() == 4
e assert 3 == 4
e + where 3 = f()
test_assert1.py:5: assertionerror
*****== 1 failed in 0.12 seconds *****===
pytest有自己的異常丟擲斷言套路,下面是最簡單的形式
import pytest
def test_zero_division():
with pytest.raises(zerodivisionerror):
1 / 0
上面**的意思是: 1/0的時候應該丟擲zerodivisionerror,否則用例失敗,斷言不通過。
另外pytest還允許我們訪問異常的具體資訊,如下面的例子
def test_recursion_depth():
with pytest.raises(runtimeerror) as excinfo:
def f():
f()f()
assert 'maximum recursion' in str(excinfo.value)
我們還可以定製斷言異常的錯誤資訊,比如
with raises(zerodivisionerror, message=「expecting zerodivisionerror」):更多斷言異常以及定製assert中比較方式的例子,請參閱官方文件… pass … failed: expecting zerodivisionerror
pytest學習教程 執行多個檔案 2
在現實的測試活動中,我們經常會定義多個用例檔案,用來實現業務邏輯或其他邏輯上用例的物理分隔,比如 login test.py 登入相關功能的測試用例 cart test.py 購物車相關功能的測試用例 checkout test.py 結算相關功能的用例 order test.py 訂單相關功能的用...
Pytest權威教程25 配置
目錄返回 pytest權威教程 你可以使用常規幫助選項獲取有關ini選項配置檔案中命令列選項和值的幫助 pytest h prints options and config file settings這將顯示已安裝外掛程式註冊的命令列和配置檔案設定。pytest根據rootdir命令列引數 指定的測...
pytest學習小結
1.安裝pytest報錯 pip安裝第三方庫報錯ssl certificate verify failed 原因 3.5以上的python需要驗證ssl,解決方式在後面增加 trusted host url1 trusted host url2 eg pip install trusted host...