文章目录
- 示例程序
- 更多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