通過上一節,我們瞭解到如何編寫一個測試用例。
而測試用例中的核心就是如何判斷預期與實際結果,自動化測試不像手工測試。
- 手工測試時,根據手工用例執行並人工去判斷結果是否符合預期;
- 自動化測試時,需要用代碼自動去判斷。
而代碼中判斷預期與實際的方式就是斷言。
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 了。