python 集成测试框架,python接口unittest测试框架
1.什么是单元测试?单元测试的对象是什么?
1:什么是单元测试?根据定义,单元测试意味着测试单个模块、单个类或单个功能,这通常是开发出来的。按照阶段划分,一般是单元测试、集成测试、系统测试、验收测试。
2:为什么要做单元测试?1)单元测试之后,就是集成测试。单个功能模块测试通过后,可以集成单个功能模块做集成测试。为了从底层发现bug,减少合成后的问题。
2)越早发现bug越好,这样可以更早发现问题,否则问题会累积到后面。做错了就要推倒重来,浪费时间和金钱,太浪费了!
3)对于我们的测试,我们进行单元测试来执行测试用例。
二。单元测试的语法介绍
1.引入自己的单元测试类:导入unit test创建一个测试类来测试你要测试的目标对象:class test math(unittest . test case)
2.引入要测试的代码模块或类名:from class_4_test import add。
3.创建一个单元测试用例来测试测试目标:def test_add(self)语法:函数以test开头,然后拼接下划线,再添加函数名。里面的内容是创建一个实例来调用方法。
4.引入断言,并判断测试结果。断言相等(实际结果,预期结果,如果有错误,处理它)。
Self.assertEqual(result_add,6,答案不等于6,所以答案是错的!)
5.引入异常判断,用异常判断处理测试用例:try.除了错误基类:AssertionError。
6.引入测试集以促进批量单元测试。一个完整的单元测试很少只执行一个测试用例,开发人员通常需要编写多个测试用例来完整测试某个软件功能。这些相关的测试用例称为测试用例集,由TestSuite类表示,使用TestSuite(),使用addTest执行测试集,使用TextTestRunner(),使用runner.run(suite)
7:单元测试参数化(少量数据,十组以内)安装:pip安装参数化#通过pip安装。记得在使用pip命令之前安装pip和setuptools。
用途:引入参数化
从参数化导入参数化
使用示例:
类TestMath(unittest。测试用例):
@ parametered . expand([
(01, 1, 1, 2),
(02, 2, 2, 4),
(03, 3, 3, 6),
])
def test_add(self.name,a,b,c):
self.assertEqual(数学(a,b)。添加(),c)
打印(测试数据为:,名称)参数化的详情请见https://github.com/wolever/parameterized。
8.测试报告,介绍htmlreport模板1。单元测试后生成测试报告。前提,把测试报告模板HTMLTestRunner.py放在python Lib目录下。
导入html报告
导入时间
#关键代码
Suite=unittest。TestSuite() #一个收集所有单元测试用例的对象。
suite . add test(TestMathFunc( test _ add ))
.
#执行测试集
now=time . strftime( % Y-% M-% d _ % H _ % M _ % S )
File=现在复制结果。html #给文件名添加时间
Fp=open(filepath, wb) #wb表示二进制文件的写操作。
#生成报告的标题,描述
runner=HTMLTestRunner。HTMLTestRunner(stream=fp,title=Python测试报告,description=这是Python报告)
runner.run(套件)
9:示例导入单元测试
从.进口.#介绍您想要测试的模块或类。例如,这是一个带有加法、加法和减法子函数的数学类。
类TestMath(unittest。测试用例):
定义设置(自身):
#初始化工作,执行初始操作。
及格
Test_ add (self): #注意必须以Test_开头
#编写测试代码
T=Math() #首先实例化数学类
result=t.add(5,6)
Self.assertEqual(result,预期值,错误此外,预期值不等于实际值)# Assertion
定义拆卸(自身):
#收尾工作,在单元测试之后完成工作。
及格
三。代码部分
1.我们先定义一个需要测试的目标类数学。它的文件名是mathfunc.pyclass Math:
定义添加(自身,a,b):
返回a b
极好的减(自身,a,b):
返回甲-乙
多重定义(自身、a、b):
返回a * b
定义除(自我,a,b):
返回a/b
2: 创建测试类,它的文件名是test_mathfunc.pyimport单元测试
从数学函数导入数学#引入你要测试的模块或者是类,打个比方,这里写了一个数学类,里面有加法添加,减法潜水艇函数
类TestMath(单元测试.测试用例):
定义设置(自身):
#初始化工作,这里面做初始操作
及格
定义测试添加(自身):#注意这里必须以测试_开头
尝试:
t=Math() #先实例化数学类
self.assertEqual(t.add(5,6),11,加法运行出错,实际值不等于期望值) #断言
除了断言错误为e:
打印(五)
def测试减(自身):
尝试:
t=数学()
self.assertEqual(t减(6,3),3,减法运行出错,实际值不等于期望值)
除了断言错误为e:
打印(五)
定义测试_多重(自身):
尝试:
t=数学()
self.assertEqual(t.multi(3,3),9,’乘法运行出错,实际值不等于期望值)
除了断言错误为e:
打印(五)
def测试_除(自身):
尝试:
t=数学()
self.assertEqual(t.divide(6,3),2.0,除法运行出错,实际值不等于期望值)
除了断言错误为e:
打印(五)
定义拆卸(自身):
#扫尾工作,这里面做单元测试结束后的工作
及格
3: 创建测试集,它的文件名为test_suite.pyimport单元测试
从test_mathfunc导入测试数学
#创建测试集合
suite=unittest .测试套件()#一个对象,集合所有的单元测试用例
套房。添加测试(测试数学( test _ add ))
套房。添加测试(测试数学( test _ MINUS ))
套房。添加测试(测试数学( test _ multi ))
套房。添加测试(测试数学( test _ divide ))
#创建一个对象来调用测试集合
runner=unittest .TextTestRunner()
runner.run(套件)
4: 参数化@参数化,传递一组数据,我们修改之前的测试_数学函数。巴拉圭文件导入单元测试
从数学函数导入数学
从参数化导入参数化
类TestMath(单元测试.测试用例):
定义设置(自身):
及格
@ parametered。展开([
(01, 1, 1, 2),
(02, 2, 2, 4),
(03, 3, 3, 6),
])
def test_add(self,name,a,b,c):
尝试:
m=数学()
self.assertEqual(m.add(a,b),c,’加法计算错误)
除了断言错误为e:
打印(五)
否则:
打印(测试数据是: ,名称)
@ parametered。展开([
(04, 3, 1, 2),
(05, 6, 3, 3),
(06, 5, 1, 2),
]
)
def test_minus(self,name,a,b,c):
尝试:
m=数学()
self.assertEqual(m减(a,b),c,’减法计算错误)
除了断言错误为e:
打印(五)
否则:
打印(测试数据是: ,名称)
@ parametered。展开([
(07, 3, 3, 9),
(08, 3, 2, 6),
(09, 1, 5, 5),
])
def test_multi(self,name,a,b,c):
尝试:
m=数学()
self.assertEqual(m.multi(a,b),c,’乘法计算错误)
除了断言错误为e:
打印(五)
否则:
打印(测试数据是: ,名称)
@ parametered。展开([
(10, 5, 2, 2.5),
(11, 4, 1, 4.0),
(12, 10, 5, 2.5),
])
def test_divide(self,name,a,b,c):
尝试:
m=数学()
self.assertEqual(m.divide(a,b),c,除法计算错误)
除了断言错误为e:
打印(五)
否则:
打印(测试数据是: ,名称)
定义拆卸(自身):
及格
5: 引入超文本标记语言报告模板,生成测试报告
导入单元测试
从test_mathfunc导入TestMathFunc
导入乱码
导入时间
#创建测试集合
套房。添加测试(TestMathFunc( test _ MINUS ))
套房。添加测试(TestMathFunc( test _ multi ))
套房。添加测试(TestMathFunc( test _ divide ))
现在=时间。strftime( % Y-% M-% d _ % H _ % M _ % S )
#执行测试用例集合
filepath=pyResult 现在是 . html
fp=打开(文件路径, wb )
#生成测试报告的标题,描述
runner=HTMLTestRunner .HTMLTestRunner(stream=fp,title=Python测试报告,描述=这是计算机编程语言报告)
runner.run(套件)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。