🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快
斷言是編程中常用的一種驗證方法,也是測試代碼中最重要的部分,用于驗證某個條件是否為真,驗證測試結果與預期結果是否一致。
unittest 提供了方便的斷言方法,用于驗證測試結果是否符合預期,若驗證失敗,則會拋出 AssertionError 異常,并輸出指定的錯誤信息。本文將介紹 unittest 中常用的斷言方法以及使用場景。
斷言的類型
在 unittest 中,常用的斷言方法可以分為以下5類:相等斷言、包含斷言、布爾斷言、類型斷言、異常斷言。
1、相等斷言
相等斷言用于驗證兩個值是否相等。
assertEqual(a, b, msg=None):驗證 a 和 b 是否相等。
assertNotEqual(a, b, msg=None):驗證 a 和 b 是否不相等。
代碼實例:
import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 2, 3)
在上述代碼中,test_equal 方法使用 assertEqual 方法驗證 1 + 2 是否等于 3。
2、包含斷言
包含斷言用于驗證某個值是否包含在另一個值中。
assertIn(a, b, msg=None):驗證 a 是否包含在 b 中。
assertNotIn(a, b, msg=None):驗證 a 是否不包含在 b 中。
代碼實例:
import unittest
class TestIn(unittest.TestCase):def test_in(self):self.assertIn('e', 'hello')
在上述代碼中,test_in 方法使用 assertIn 方法驗證字母 'e' 是否包含在字符串 'hello' 中。
3、布爾斷言
布爾斷言用于驗證某個值是否為真或假。
assertTrue(x, msg=None)
:驗證?x
?是否為真。assertFalse(x, msg=None)
:驗證?x
?是否為假。
代碼實例:
import unittest
class TestBoolean(unittest.TestCase):
def test_boolean(self):self.assertTrue(1 + 1 == 2)
在上述代碼中,`test_boolean` 方法使用 `assertTrue` 方法驗證 `1 + 1 == 2` 是否為真。
4、類型斷言
類型斷言用于驗證某個值的類型是否符合預期。
?assertIsInstance(a, b, msg=None)`:驗證 `a` 是否是 `b` 類型的實例。
assertNotIsInstance(a, b, msg=None)`:驗證 `a` 是否不是 `b` 類型的實例
代碼實例:
import unittest
class TestType(unittest.TestCase):def test_type(self):self.assertIsInstance('hello', str)
上述代碼中,test_type 方法使用 assertIsInstance 方法驗證字符串 'hello' 是否是字符串類型。如果驗證失敗,則會拋出 AssertionError 異常,并輸出指定的錯誤信息。
5、異常斷言
異常斷言用于驗證某個操作是否會拋出異常。
assertRaises(exc, callable, *args, **kwds):
驗證 callable(*args, **kwds) 是否會拋出 exc 類型的異常。
代碼實例:
import unittest
class TestException(unittest.TestCase):def test_exception(self):self.assertRaises(ZeroDivisionError, lambda: 1 / 0)
上述代碼中,test_exception 方法使用 assertRaises 方法驗證 lambda 函數 lambda: 1 / 0 是否會拋出 ZeroDivisionError 異常。
注意:在使用斷言方法時,可以通過?msg?參數來指定斷言失敗時的錯誤信息,以便于定位問題。
代碼實例:
import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 1, 3, '1 + 1 should equal to 3')
上述代碼中,使用 msg 參數來指定錯誤信息 '1 + 1 should equal to 3'。如果驗證失敗,則會輸出這個錯誤信息。
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。