Python中unittest.case的常用断言方法介绍
在Python中,unittest模块是一个用于编写和运行单元测试的框架。unittest.case模块是unittest模块中的一个核心类,它提供了许多用于断言测试结果的方法。下面是unittest.case中常用的断言方法的介绍及使用示例。
1. assertEqual(first, second, msg=None)
断言 个参数与第二个参数相等。如果不相等,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_equal(self):
self.assertEqual(1 + 2, 3)
self.assertEqual('Hello', 'Hello')
self.assertEqual([1, 2, 3], [1, 2, 3])
if __name__ == '__main__':
unittest.main()
2. assertNotEqual(first, second, msg=None)
断言 个参数与第二个参数不相等。如果相等,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_not_equal(self):
self.assertNotEqual(1 + 2, 4)
self.assertNotEqual('Hello', 'World')
self.assertNotEqual([1, 2, 3], [4, 5, 6])
if __name__ == '__main__':
unittest.main()
3. assertTrue(expr, msg=None)
断言表达式为真。如果表达式为假,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_true(self):
self.assertTrue(1 < 2)
self.assertTrue('Hello' == 'Hello')
self.assertTrue([1, 2, 3])
if __name__ == '__main__':
unittest.main()
4. assertFalse(expr, msg=None)
断言表达式为假。如果表达式为真,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_false(self):
self.assertFalse(1 > 2)
self.assertFalse('Hello' == 'World')
self.assertFalse([])
if __name__ == '__main__':
unittest.main()
5. assertIs(expr1, expr2, msg=None)
断言两个表达式引用同一对象。如果不是,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_is(self):
a = [1, 2, 3]
b = a
self.assertIs(a, b)
self.assertIs('Hello', 'Hello')
self.assertIs([1, 2, 3], [1, 2, 3])
if __name__ == '__main__':
unittest.main()
6. assertIsNot(expr1, expr2, msg=None)
断言两个表达式引用不同对象。如果引用相同,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_is_not(self):
a = [1, 2, 3]
b = [1, 2, 3]
self.assertIsNot(a, b)
self.assertIsNot('Hello', 'World')
self.assertIsNot([], [])
if __name__ == '__main__':
unittest.main()
7. assertIsNone(expr, msg=None)
断言表达式的值为None。如果不是None,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_is_none(self):
a = None
b = []
self.assertIsNone(a)
self.assertIsNone(b)
if __name__ == '__main__':
unittest.main()
8. assertIsNotNone(expr, msg=None)
断言表达式的值不为None。如果是None,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_is_not_none(self):
a = None
b = []
self.assertIsNotNone(b)
self.assertIsNotNone(a)
if __name__ == '__main__':
unittest.main()
9. assertIn(member, container, msg=None)
断言成员存在于容器中。如果不存在,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_in(self):
a = [1, 2, 3]
self.assertIn(1, a)
self.assertIn('H', 'Hello')
self.assertIn('Hello', ['Hello', 'World'])
if __name__ == '__main__':
unittest.main()
10. assertNotIn(member, container, msg=None)
断言成员不存在于容器中。如果存在,断言失败,并抛出一个 AssertionError 异常。
示例:
import unittest
class Test(unittest.TestCase):
def test_not_in(self):
a = [1, 2, 3]
self.assertNotIn(4, a)
self.assertNotIn('H', 'World')
self.assertNotIn('Hello', ['Hi', 'World'])
if __name__ == '__main__':
unittest.main()
这些断言方法只是unittest.case模块中提供的一小部分,还有很多其他有用的断言方法,如assertIsInstance、assertNotIsInstance、assertRaises等。不同的断言方法适用于不同情况下的断言,可以根据具体的测试需求选择使用。
