Python接口自动化系列之unittest结合ddt的使用教程详解
作者:那你多喝点水 发布时间:2023-10-11 05:31:02
标签:Python,接口自动化,unittest
前面一篇我们已经把unittest的常用用法都已经讲过了,可能很多小伙伴有个疑问,unittest框架怎么做数据驱动呢?这节我们就来学习一下。
1、unittest 没有自带数据驱动功能。
所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成。
DDT是 “Data-Driven Tests”的缩写。
资料:http://ddt.readthedocs.io/en/latest/
2、什么是ddt?
测试步骤相同,代码一样,测试数据不同,当我们输入一组测试数据的时候,测试框架会自动生成独立的多个测试用例的方法,这就是ddt。(个人理解)
注意:ddt不等于数据驱动,ddt只是实现了数据驱动思想
首先,我们需要下载包,下载方法如下:
然后,我们开始学习
import unittest
import ddt
# 首先我们导入ddt
# 我们还是哪官网这个加法方法来做例子,首先我们准备一些测试数据
data = [(1,2,3),
(1,3,4),
(1,4,5)]
# 装饰类,也就是继承自TestCase的类,可以理解为给这个类戴了个帽子
@ddt.ddt
class IntegerArithmeticTestCase(unittest.TestCase):
# 装饰测试方法。参数是一系列的值
# 注意要加这个*,多组数据,@ddt.data(*data)相当于@ddt.data((1,2,3),(1,3,4),(1,4,5))
@ddt.data(*data)
# 每次运行都会从 data中取出一组数据,动态生成一个独立的测试用例方法
def testAdd(self,test_data):
print(test_data)
self.assertEqual((test_data[0] + test_data[1]), test_data[2])
'''
测试用例方法名生成规则
使用ddt后,会产生一个新的测试用例方法名:之前的测试用例方法名_ordinal_data
之前的测试用例方法名:即定义的测试用例方法名。比如def test_large(),这里就是test_large
ordinal:整数,从1开始递加。
data:如果传递过来的数据存在__name__属性,则这里就是该数据的__name__值。如果未定义__name__属性,ddt会尽量将传递过来的数据转化为python标识符,作为data显示。比如(3,2)就转化为3_2。
需要注意的是,如果数据是字典,则这里就是字典的key。
'''
if __name__ == '__main__':
unittest.main(verbosity=2)
我么执行看一下结果:
在看一下HTML的结果报告:
3、下面我们就说一下在实际框架中ddt是如何使用的
实际框架中只不过测试数据不是放在代码里,代码要做数据分离,实际是把数据放在Excel,或者yaml,或者json文件中,等等吧,作者实际框架中用的最多的都是这三种。
1)我么你先看一下测试数据放在json中,先建一个json文件
import unittest
import ddt
# 装饰类,也就是继承自TestCase的类,可以理解为给这个类戴了个帽子
@ddt.ddt
class IntegerArithmeticTestCase(unittest.TestCase):
# 装饰测试方法。参数是文件名。文件可以是json 或者 yaml类型。
# 注意,如果文件以”.yml”或者”.yaml”结尾,ddt会作为yaml类型处理,其他所有文件都会作为json文件处理。
# 如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。
# 如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数
@ddt.file_data('d1.json')
@ddt.unpack
# 每次运行都会从 data中取出一组数据,动态生成一个独立的测试用例方法
def testAdd(self,first,second,values):
self.assertEqual( (first+ second), values)
if __name__ == '__main__':
unittest.main(verbosity=2)
执行查看结果如下:
2)我么你在看一下测试数据放在yaml中,先建一个yaml文件
来源:https://blog.csdn.net/weixin_45608577/article/details/113739263
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 一、什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。 二、如何查看执行计划 1
- 第一点:找Python安装目录方法一:方法二:输入import sysprint(sys.path)化黑线处第二点:找到安装目录后就可以开始
- 数据集中的图像,一般不可用在以下3个方面:1.图像过小2.无法打开3.“Premature end of JPEG fi
- 本文实例讲述了python自动化测试之从命令行运行测试用例with verbosity,分享给大家供大家参考。具体如下:实例文件recipe
- 功能描述目标完成多账号微信小程序每天自动签到输出签到成功则向微信群发送签到成功的信息否则提示用户签到失败,需手动签到包管理requestsi
- 关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来发现事情之间的联系,最早是为了发现超
- 将Excel中的数据导入到Access中,前提是在Access中的表已经建好。 dim conn dim co
- 01. 应用场景及定义方式应用场景在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到私有属性
- UTC与DSTUTC可以视为一个世界统一的时间,以原子时为基础,其他时区的时间都是在这个基础上增加或减少的,比如中国的时区就为UTC+8。D
- 批量生成word文件场景:需要新建多个类似文件名比如:今天的事例是新建12个文件名为:保安员考试试卷1及答案.docx保安员考试试卷2及答案
- 本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,
- python3字符串操作 x = 'abc' y = 'defgh' print(x + y)
- python对XML文件的操作1、xml 创建import xml.etree.ElementTree as ETnew_xml=ET.El
- 本文实例讲述了CodeIgniter分页类pagination使用方法。分享给大家供大家参考,具体如下:controller控制器(appl
- 将wav转amr,并转换成hex数组将wav文件快速转为amr,同时将arm文件转为16进制数组,保存在对应.h文件,供嵌入式设备使用(无文
- 最近看到市场上各种的文档格式转换软件,要么是收费、要么是有大量的广告。于是学习了一下 PyQt5 的页面操作,再加上了解 pandas 的使
- 点击顶部的“SQL”标签进入sql命令输入界面。输入以下命令:update mysql.user set password=PASSWORD
- 正好最近的域名备案通过了,兴起就突然想做一个网页,虽然之前去备案域名也是有这个目的。问过几个人,说用linux上用PHP搭建网站很简单,就试
- 开发工具**Python版本:**3.6.4相关模块:pyecharts模块;以及一些Python自带的模块。环境搭建安装Python并添加
- 本文通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书的page Designer应用程序,采用QGraphi