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()