单元测试框架 python
1、为什么要做单元测试
- 单元测试更细致、更有针对性
- 单元测试能测试到很多系统测试无法达到的测试
- 单元测试是在编码中做的测试,发现问题方便修改,而系统测试的问题修改成本可能变高
- 单元测试是自动化测试
2、单元测试实例操作
1、定义一个PC类,里面有div方法
1 class PC(object): 2 def add(self, x, y): 3 return x + y 4 def ub(self, x, y): 5 return x - y 6 def mul(self, x, y): 7 return x * y 8 # def div(self, x, y): 9 # return x / y 10 def div(self, x, y): 11 try: # 错误捕捉 12 return float(x)/float(y) #将x y转换为浮点型后相除 13 except: 14 return None #如果无法转换或不能相除,则返回none 15 #################################################################### 16 if __name__ == '__main__': 17 pc = PC() 18 print(pc.add(100, 2345)) 19 print(pc.sub(100, 2345)) 20 print(pc.mul(100, 2345)) 21 print(pc.div(100, 4))
2、创建一个单元测试用例类,继承自unittest.TestCase类
1 import unittest 2 3 class MyTestCase(unittest.TestCase): 4 def test_something(self): 5 self.assertEqual(True, False) 6 7 if __name__ == '__main__': 8 unittest.main()
3、定义setUp,tearDown方法,setUp里面实例化了被测类,并生成一个成员变量
1 @classmethod 2 def setUpClass(cls): 3 def setUp(self): 4 def test_01(self): 5 .... 6 def tearDown(self): 7 @classmethod 8 def tearDownClass(cls):
4、写每一个测试用例:一个有效等价类用例、多个无效等价类用例
5、a)传入不同的参数以调用被测方法;
b)用断言语句验证返回结果
3、python单元测试框架原则:
- 继承自unittest.TestCase
- 以test'开头的方法就是一个测试用例
- 每个测试用例执行之前会执行setUp,执行完会执行tearDown
- 有一系列的断言语句验证测试结果:assertEqual,assertIn等
- setUpClass、tearDownClass:所有用例执行前执行一次setUpClass,后执行一次tearDownClass
4、单元测试setUp()和tearDown()
setUp:表示前置条件,它在每一个用例执行之前必须会执行一次
setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。
tearDown:表示释放资源,它在每次用例执行完之后会执行一次
tearDown可以理解为我们测试完毕后,需要关闭浏览器。
运行的顺序:
1. 每次执行函数方法时,必须先执行一次setUp()函数,执行完一个函数方法后,必须再执行一次tearDown()函数
2. 执行函数的时候有序号时,例如testxx1,testxx2 会根据序号来进行执行
3. 当函数方法不是以test开头是,不执行该方法。