1、斷言介紹

在執行測試用例的過程中,最終用例是否執行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的,這時會用到斷言方法。

本著沒有訊息就是最好的訊息的原則,如果斷言成功不採取任何措施(不輸入任何日誌),否則就會觸發AssertionError(斷言錯誤)的異常。

2、常用的斷言方法

斷言方法名稱 使用引數 驗證
assertEqual()(常用) a,b,[msg='測試失敗時列印的資訊'] 斷言a和b是否相等,相等則測試用例通過
assertNotEqual() a,b,[msg='測試失敗時列印的資訊'] 斷言a和b是否相等,不相等則測試用例通過。
assertTrue()(常用) x,[msg='測試失敗時列印的資訊'] 斷言x是否True,是True則測試用例通過
assertFalse() x,[msg='測試失敗時列印的資訊'] 斷言x是否false,是false則測試用例通過
assertIs() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b,是則測試用例通過
assertNotIs() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b,不是則測試用例通過
assertIsNone() x,[msg='測試失敗時列印的資訊'] 斷言x是否None,是None則測試用例通過
assertIsNotNone() x,[msg='測試失敗時列印的資訊'] 斷言x是否None,不是None則測試用例通過。
assertIn() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否在b中,在b中則測試用例通過
assertNotIn() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否在b中,不在b中則測試用例通過
assertIsInstance() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b的一個例項,是則測試用例通過。
assertNotIsInstance() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b的一個例項,不是則測試用例通過。

提示:如果ab斷言失敗,則輸出msg中定義的資訊,如果沒有定義msg,則輸出系統異常。

3、斷言示例

"""
1.學習目標
必須掌握unittest中斷言使用
2.語法
2.1 編寫位置
在測試用例中去編寫,先執行測試用例,最後一行斷言。
2.2 使用的斷言方法
注意:前邊a是預期,後邊b是測試實際的值
(1)assertEqual(a,b,msg)
斷言a和b是否相等,如果相等,斷言成功,否則斷言失敗
(2)assertTrue(x,msg)
斷言條件x是否為True,如果是,斷言成功,否則斷言失敗
(3)其他斷言用法類似。
2.3 判定斷言結果
斷言成功,控制檯沒有任何提示
斷言失敗,控制檯AssertionError關鍵字會出現
3.需求
編寫一個有斷言的測試類
"""
# 1 匯入unittest
import unittest # 2 建立測試類
class Test_demo(unittest.TestCase): # 3 編寫test case
def test_case_03(self):
"""測試用例3"""
print("執行測試用例3")
# 用例步驟執行完成後做斷言
# assertEqual斷言a和b是否相等
self.assertEqual(2, 1 + 1, msg="斷言成功") """
執行結果:
斷言成功,控制檯沒有任何提示 下面是總測試結果的日誌:
執行測試用例3
# 在0.005秒內進行1次測試
Ran 1 test in 0.005s # 測試用例全部通過
OK
""" def test_case_02(self):
"""測試用例2"""
print("執行測試用例2")
# assertEqual斷言a和b是否相等
self.assertEqual(3, 1 + 1, msg="斷言失敗") """
執行結果: 執行測試用例2 斷言失敗
3 != 2 Expected(預期) :2
Actual(實際) :3 下面會有報錯資訊(主要內容):
AssertionError: 2 != 3 : 斷言失敗 # 在0.008秒內進行1次測試
Ran 1 test in 0.008s # 失敗一個測試用例
FAILED (failures=1) # 斷言失敗
Assertion failed
""" def test_case_01(self):
"""測試用例1"""
print("執行測試用例1")
# 斷言條件x是否為True
self.assertTrue(1 > 2, msg="條件不成立,斷言失敗") # 4 編寫普通方法
if __name__ == '__main__':
# 執行當前測試類中,以test開頭的測試用例
unittest.main()