文章目录
通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些bug,使用unittest库的方法如下:
示例程序
py
import unittest
class Demo01(unittest.TestCase):
@classmethod
def setUpClass(self) -> None:
print("执行测试用例 - 整体初始化 - setUpClass")
def setUp(self) -> None: # 测试用例方法执行前的操作
print('开始执行测试用例 - setUp')
def tearDown(self) -> None: # 测试用例方法执行前的操作
print('结束执行测试用例 - tearDown')
@classmethod
def 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()
执行结果如下:
text
执行测试用例 - 整体初始化 - setUpClass
开始执行测试用例 - setUp
测试用例1
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例2
结束执行测试用例 - tearDown
开始执行测试用例 - setUp
测试用例3
结束执行测试用例 - tearDown
Ran 3 tests in 0.010s
FAILED (failures=1)
2 != 1
Expected :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