1.unittest类
第一种test case 简单的组织方法
- 测试用例所在的类需要继承
unittest.TestCase
类,unittest模块会识别到这个类是要跑的test case。 - 类中的每个方法需要以
test
开头(一个方法是一个测试用例) - 主函数中调用
unittest.main()
函数来运行类中所有以test开头的方法
import unittest
class test(unittest.TestCase):
def test_case1(slef):
pass
def test_case2(slef):
pass
if __name__ == "__main__":
unittest.main()
2.set up & tear down–准备开始和打扫战场
setUp(self)
setUp()方法是unittest 类中的成员方法,在使用时需要继承父类(unittest),重写父类中的方法setUP().
用于测试用例执行前的初始化工作,在执行每个测试用例开始
时跑一次这个方法。一个类中有几个测试用例就会跑几次这个方法。
tearDown(self)
在每个测试用例之后
跑一次的方法。用于测试用例执行后的善后工作,还原测试环境和数据。
setUpClass(cls)
setUpClass()方法是类方法,类的静态方法,只在整个类运行前加载一遍,之后无论这个类被实例化多少次,都不会再加载。
用于测试用例所在的类,执行测试用例之前执行。
需要注意的是,类的静态方法中的变量需要定义成静态变量,以供之后的类的成员方法test case去使用, 静态变量的调用可以直接用slef.
去调用。
a = None
b = None
@classmethod
def setUpClass(cls):
cls.a = a
cls.b = b
def test_case1(self):
slef.a .get(id)
slef.b.get(id)
tearDownClass(cls)
用于测试用例所在的类,执行所有测试用例之后再执行的方法。
setUpModel(), tearDownModel()
用于测试用例放在不同的文件里,整个测试模块执行开始和结束。
执行顺序
setUpClass
setUp
test_case1
tearDown
setUp
test_case2
tearDown
tearDownClass
3.装饰器-- 选择一些用例不跑
@unittest.skip(reason):
无条件跳过装饰器的测试,可以说明跳过的原因
@unittest.skip('only run P1 test cases')
def test_case01(self):
pass
@unittest.skipIf(reason):
条件为真时跳过装饰器的测试,并说明跳过的原因
4.suite,选择跑一组用例
第二种组织形式
suite = unittest.TestSuite()
suite = addTest(Classname(test_case1))
suite = addTest(Classname(test_case3))
unittest.TextTestRunner(suite)
5.跑多个测试文件
第三种组织方式
test_case1_10.py
test_case11_20.py
创建测试积类:
- 测试积类TestBase,继承unittest.TestCase父类
- TestBase中重写setUp,tearDown
创建程序入口文件
if __name__ == "__main__":
test_dir = './'
pattern = 'test_*.py'
discover = unittest.defaultTestLoader.discover(test_dir, pattern = patten )
unittest.TextTestRunner().run(discover)