unittest - 断言方法

测试用例是否执行通过,是通过判断测试得到的实际结果与预期结果是否相等决定的。unittest框架的TestCase类,提供以下方法用于判断测试结果:

  • assertEqual(a, b, msg)   断言a和b是否相等,如果不相等则测试失败。msg为可选参数,用于失败时打印信息       
  • assertNotEqual(a, b)    断言a和b是否相等,如果相等则测试失败
  • assertTrue(x)
  • assertFalse(x)
  • assertIs(a, b)     判断a和b是否为同一对象
  • assertIsNot(a, b)
  • assertIsNone(x)
  • assertIsNotNone(x)
  • assertIn(a, b)      a in b
  • assertNotIn(a, b)

 

1. 举例如下:

1. assertEqual()

 1 import unittest
 2 
 3 
 4 class Test(unittest.TestCase):
 5     def setUp(self):
 6         self.a = int(input('请输入一个数字:'))
 7 
 8     def test_1(self):
 9         self.assertEqual(self.a, 10, '您输入的不是10')   # 比较输入的数,是否等于10,如果不相等则输出msg中定义的信息
10 
11     def tearDown(self):
12         pass
13 
14 
15 if __name__ == '__main__':
16     unittest.main()

 

2. assertTrue()

 1 import unittest
 2 
 3 
 4 def is_prime(num):
 5     if num <= 1:
 6         return False
 7 
 8     for i in range(2, num):
 9         if num % i == 0:
10             return False
11 
12     return True
13 
14 
15 class Test(unittest.TestCase):
16     def setUp(self):
17         pass
18 
19     def test_1(self):
20         self.assertTrue(is_prime(7), '这不是质数')   # 判断7是否是质数,若不是,则打印错误信息
21 
22     def tearDown(self):
23         pass
24 
25 
26 if __name__ == '__main__':
27     unittest.main()

 

3. assertIn()

 1 import unittest
 2 
 3 
 4 class Test(unittest.TestCase):
 5     def setUp(self):
 6         pass
 7 
 8     def tearDown(self):
 9         pass
10 
11     def test1(self):
12         a = 'a dog'
13         b = 'this is a dog'
14         self.assertIn(a, b, '不包含')  # 判断a是否包含在b中,若不包含,则打印错误信息
15 
16 
17 if __name__ == '__main__':
18     unittest.main()

 

2. 测试用例中断言的影响:

import unittest


class MyTest(unittest.TestCase):
    def test_case1(self):
        print('测试用例1,断言前')
        self.assertEqual(2,3)
        print('测试用例1, 断言后')    # 前一句断言失败,该行不执行

    def test_case2(self):
        print('测试用例2,断言前')    # 前一个测试用例断言失败,不影响其他测试用例执行
        self.assertEqual(2,2)
        print('测试用例2,断言后')     # 断言成功,该行执行


if __name__ == '__main__':
    unittest.main()

 

posted @ 2020-03-30 14:58  小虫虫大虫虫  阅读(654)  评论(0编辑  收藏  举报