文章目录
通过一种规范的测试方法,可以帮助我们在修改程序后能够快速的检测一些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