Python中unit test的基本写法已经在上一篇文章中说明:
Python中的Unittest基本用法_哲思天下的博客-优快云博客
但我们在写测试case时候,还可能需要下面问题:
1. 在一个测试类中包含很多测试方法,这些测试方法有共同的操作。例如:
test_case1和test_case2执行前都需要用到同一个实例A和同一个测试file
2. 测试类中的测试方法之间有依赖关系,例如:
必须先执行test_case1,再执行test_case2
这个时候,我们就需要控制测试方法的执行顺序,那怎么做呢?
针对不同的测试方法有共用的数据和操作,如果这些数据和操作对所有case只需要执行一次,那么就可以用setUpClass和tearDownClass对进行控制;如果这些数据和操作对每一个case都需要执行一次,那么可以用setUp和tearDown对来实现。不同的是setUpClass和tearDownClass属于类方法,必须用@classmethod进行修饰。
针对测试方法的顺序,Unit Test默认是按照test_后面ASCII码的顺序执行,所以我们想要认为控制测试顺序的时候,可以按照这一规则进行命名,例如 test_1_case, test_2_case, test_3_case...等等,假设某一天我们需要针对test_2_case增加一个case,我们可以命名为test_2_case_1。
另外还有一对setUpModule和tearDownModule,这对函数是每个测试模块(一个 py 文件为一个模块)加载/结束时执行一次,因为一个py文件中可能有多个测试类。
举例如下:
import unittest
def setUpModule(self):
print("setUpModule is running")
def tearDownModule(self):
print("tearDownModule is running")
class TestMyFunc1(unittest.TestCase):
@classme