注意:
接口测试的本质:测试类里面的函数,通过数据驱动
单元测试的本质:测试函数,代码级别,通过代码级别
单元测试框架:unittest+python
一、unittest简介
python+unittest+HTMLTestRunner写的,这套框架主要是针对单元测试的。其中HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 html的测试报告,而unittest作为标准python中的一个模块,是其它框架和工具的基础,所以了解unittest的原理对理解这套框架非常重要
二、基础流程
功能测试步骤:
1、写用例(TestCase)
2、执行用例(TestSuite:存储用例,TestLoader:找用例,加载用例,存储到TestSuite里面)
3、对比实例结果,预期结果,判断用例是否通过(断言Assert)
4、出具测试报告(TextTestRunner)
如下,写个简单的加法/乘法运算,来说明单元测试:
1、框架:
2、Math_Method脚本:
class MathMethod(object):
def __init__(self,a,b):
self.a = a
self.b = b
def add(self):
return (self.a+self.b)
def multi(self):
return self.a * self.b
3、用例脚本
#写一个测试类,对我们写的MathMethod进行单元测试
import unittest
from class_5_18.Math_Method import MathMethod #测试目标类
class TestMathMethod(unittest.TestCase):
#编写测试用例
#一个测试用例就是一个函数,不能传参
#所有的用例都是test开头:test_
def test_add_two_positive(self): #两个正数相加
res = MathMethod(1,2).add()
print ("1+2的结果是:%s"%res)
#添加断言,期望结果与实际结果比对,一致通过,不一致失败
self.assertNotEqual(3,res,"测试成功") #断言里面的msg是用例执行失败了,才会显示
class TestMutli(unittest.TestCase):
def test_mutli_two_positive(self): # 两个正数相乘
res = MathMethod(1,2).multi()
print ("1*2的结果是:%s"% res)
#运行顺序按照ASCII码执行
if __name__ == "__mian__":
unittest.main()
4.1、执行用例脚本(
import unittest
import HTMLTestRunner
from class_5_18.class_01 import TestMathMethod
suite = unittest.TestSuite() #存储用例
#只执行一条
suite.addTest(TestMathMethod("test_add_two_positive")) #通过函数名执行用例
with open("test.txt","w+") as file:
runner = unittest.TextTestRunner(stream=file, verbosity=1) # verbosity表示打印的结果详细情况
runner.run(suite)
此方法只能通过函数名执行用例,如果用例有很多,几千个的话,此方法就行不通了
4.2、执行用例(通过loadTestsFromTestCase方法,可执行一个类名里面的全部用例)
import unittest