欢迎访问宙启技术站
智能推送

Python中unittest.case的常用断言方法介绍

发布时间:2023-12-27 13:43:14

在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等。不同的断言方法适用于不同情况下的断言,可以根据具体的测试需求选择使用。