-
unittest 是 Python 的单元测试框架,是 Python 的标准库模块,所以在安装 Python 后就可以直接使用:
1. import unittest
2. 继承 unittest.TestCase 基类
3. 测试方法以 test 开头 -
为什么选择 unittest
1. 清晰的单元测试框架,提供 TestCase,TestSuite,TestRunner 等基本类
2. unittest 是原生 Python 的一部分
3. unittest 有第三方可用的 HTML 库,可以轻松的生成测试报告 -
TestCase
一个 TestCase 的实例就是有个测试用例,一个测试用例就是一个完整的测试流程,包括测试前期准备环境的搭建(setUp),执行测试代码(run),测试后环境的还原(tearDown) -
Test fixture
一个新的 TestCase 实例作为一个测试脚手架,在运行每个测试时,setUp(),tearDown() 和__init__() 会被调用一次 -
TestSuite
多个测试用例集合在一起,就是 TestSuite,而且 TestSuite 还可以继续嵌套 TestSuite -
Test runner
执行测试用例,其中的 run(test) 会执行 TestSuite/TestCase 中的 run(test) 方法 -
Test loader
用来加载 TestCase 到 TestSuite 中,其中有几个 loadTestsFrom_() 方法,就是从各个地方寻找 TestCase,创建它们的实例,然后 add 到 TestSuite 中,再返回一个 TestSuite 实例 -
执行顺序
setUpClass -> setUp -> test01_xxx -> tearDown -> setUp -> test02_xxx -> tearDown -> tearDownClass
Note: 用例之间按用例名称 ASCII 码的顺序进行加载:0 ~ 9,A ~ Z, a ~ z
import unittest
class DemoTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('执行 setUpClass')
@classmethod
def tearDownClass(cls):
print('执行 tearDownClass')
def setUp(self):
print('执行 setUp')
def tearDown(self):
print('执行 tearDown')
def test1(self):
print('执行测试用例 test1')
def test2(self):
print('执行测试用例 test2')
if __name__ == '__main__':
unittest.main()
执行结果
..
执行 setUpClass
执行 setUp
执行测试用例 test1
执行 tearDown
执行 setUp
执行测试用例 test2
执行 tearDown
执行 tearDownClass
Process finished with exit code 0