断言是编程中常用的一种验证方法,也是测试代码中最重要的部分,用于验证某个条件是否为真,验证测试结果与预期结果是否一致。
unittest 提供了方便的断言方法,用于验证测试结果是否符合预期,若验证失败,则会抛出 AssertionError 异常,并输出指定的错误信息。本文将介绍 unittest 中常用的断言方法以及使用场景。【文末有配套视频教程和免费的资料文档领取】
在 unittest 中,常用的断言方法可以分为以下5类:相等断言、包含断言、布尔断言、类型断言、异常断言。
相等断言用于验证两个值是否相等。
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。
包含断言用于验证某个值是否包含在另一个值中。
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' 中。
布尔断言用于验证某个值是否为真或假。
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` 是否为真。
类型断言用于验证某个值的类型是否符合预期。
?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 异常,并输出指定的错误信息。
异常断言用于验证某个操作是否会抛出异常。
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'。如果验证失败,则会输出这个错误信息。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】
软件测试视频教程观看处:
【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。