Unittest-斷言:判斷測試結果

通過上一節,我們瞭解到如何編寫一個測試用例。

而測試用例中的核心就是如何判斷預期與實際結果,自動化測試不像手工測試。

  • 手工測試時,根據手工用例執行並人工去判斷結果是否符合預期;
  • 自動化測試時,需要用代碼自動去判斷。

而代碼中判斷預期與實際的方式就是斷言。

Python 中內置了斷言語句 assert。接邏輯判斷表達式,通過邏輯表達式返回結果的 True 和 False 來辨別預期與實際是否相符。

# assert 接收表達式和自定義斷言錯誤信息
>>> assert sum([1,2,3]) == 6, '累加結果錯誤'

結果返回爲 True,沒有任何反應,說明斷言成功。而如果:

>>> assert sum([1,2,3]) == 5, '累加結果錯誤'
Traceback (most recent call last):
AssertionError: 累加結果錯誤

斷言失敗會拋出斷言異常AssertionError,並輸出自定義的錯誤提示信息。

如果你沒有什麼特殊要求,assert 語句就足夠斷言用了,比如 pytest 框架中就直接使用 assert 語句。

unittest 中定義的斷言,在斷言錯誤信息中會更加豐富一些。如果你想,也可以全部用 assert 代替。

unittest 在 TestCase 類中定義了非常多的以 assert 開頭的斷言方法 。對我們來說,最常用的如下:

斷言方法 條件 說明
assertEqual(a, b) a == b 判斷 a 和 b 是否相等,相等則通過否則失敗
assertNotEqual(a, b) a != b 判斷 a 和 b 是否不等,不等則通過相等失敗
assertIn(a, b) a in b b 是否包含 a,包含則通過否則失敗
assertNotIn(a, b) a not in b b 是否不包含 a,包含則失敗否則通過
assertTrue(x) x is True 表達式 x 爲 True 則通過,否則失敗
assertFalse(x) x is False 表達式 x 爲 False 則通過,否則失敗
assertIsNone(x) x is None x 是否爲 None,是則通過,否則失敗
assertIsNotNone(x) x is not None x 是否爲 None,是則失敗,否則通過

這些方法,最常用的應該是 assertEqual 、assertIn 以及 assertTrue 了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章