1. 程式人生 > 實用技巧 >Pytest系列(二)assert 斷言

Pytest系列(二)assert 斷言

一、斷言

Pytest 允許使用 python 自帶的 assert 關鍵字進行斷言,在條件不滿足時直接返回錯誤,而不必等到程式執行後出現崩潰。

assert 關鍵字後可以跟表示式 expr 和提示資訊 msg。若 expr 表示式為真,則斷言通過,用例執行成功,也可以使用 msg 指定斷言失敗的提示資訊。

語法格式:assert expr [, msg]
示例:

def func():      
      return 5 
def test_demo():      
      num = func()        
      assert num % 2 == 0, "%d 不是偶數" % num

執行結果:

二、常用斷言

  • assert expr :判斷表示式 expr 為真

  • assert not expr :判斷 expr 不為真

  • assert a in b :判斷 b 包含 a

  • assert a == b :判斷 a 等於 b

  • assert a != b :判斷 a 不等於 b

三、異常斷言

可以使用 pytest.raises 作為上下文管理器,在丟擲異常時捕獲對應的異常例項。

def test_zero_division():   
      with pytest.raises(ZeroDivisionError) as excinfo:       
            1 / 0     
      assert excinfo.type == ZeroDivisionError     
      assert "division by zero" in str(excinfo.value)

其中,excinfo 是一個 ExceptionInfo 例項,是實際異常的裝飾器,主要屬性包括 .type、.value、.traceback。