pytest學習教程 assert 3

2021-09-25 09:08:41 字數 1618 閱讀 6200

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

*****== 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給出的錯誤提示是:f()的值是3,也就是實際結果是3,而預期結果是4,3不等於4,因此斷言未通過,用例失敗。

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」):

… pass … failed: expecting zerodivisionerror

更多斷言異常以及定製assert中比較方式的例子,請參閱官方文件

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