文章目录
- 示例程序
- 更多assert方法
通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些bug,使用unittest库的方法如下:
示例程序
import unittestclass Demo01(unittest.TestCase):@classmethoddef setUpClass(self) -> None:print("执行测试用例 - 整体初始化 - setUpClass")def setUp(self) -> None:  # 测试用例方法执行前的操作print('开始执行测试用例 - setUp')def tearDown(self) -> None:  # 测试用例方法执行前的操作print('结束执行测试用例 - tearDown')@classmethoddef tearDownClass(cls) -> None:  # 测试用例方法执行后的操作print("执行测试用例 - 整体结束 - tearDownClass")def test_01(self):  # 测试用例print("测试用例1")self.assertEqual(1, 1)  # 测试断言def test_02(self):  # 测试用例print("测试用例2")self.assertEqual(2, 2)def test_03(self):  # 测试用例print("测试用例3")self.assertEqual(1, 2)if __name__ == '__main__':unittest.main()
执行结果如下:
执行测试用例 - 整体初始化 - setUpClass
开始执行测试用例 - setUp
测试用例1
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例2
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例3
结束执行测试用例 - tearDownRan 3 tests in 0.010sFAILED (failures=1)2 != 1Expected :1
Actual   :2.........执行测试用例 - 整体结束 - tearDownClass
在执行测试用例的过程中:
- 在执行全部用例前会执行setUpClass,全部用例执行完成后会执行tearDownClass
- 每个用例在执行前会执行setUp,用例执行后会执行tearDown
- 每个需要执行的用例前都有一个前缀test,根据包含前缀的函数名称(比如testxxxx),就会被认定为是测试用例的一部分
更多assert方法
| 断言方法 | 检查条件 | 
|---|---|
| assertEqual(a, b) | a == b | 
| assertNotEqual(a, b) | a != b | 
| assertTrue(x) | bool(x) is True | 
| assertFalse(x) | bool(x) is False | 
| assertIs(a, b) | a is b | 
| assertIsNot(a, b) | a is not b | 
| assertIsNone(x) | x is None | 
| assertIsNotNone(x) | x is not None | 
| assertIn(a, b) | a in b | 
| assertNotIn(a, b) | a not in b | 
| assertlsInstance(a, b) | isinstance(a, b) | 
| assertNotIsInstance(a, b) | not isinstance(a, b) | 
更多assert的方法请参考:https://docs.python.org/zh-cn/3/library/unittest.html#unittest.TestCase.assertEqual