您的当前位置:首页正文

Python中 unittest

2024-11-09 来源:个人技术集锦

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()

用于测试用例放在不同的文件里,整个测试模块执行开始和结束。

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)
Top