Python接口自动化系列之unittest结合ddt的使用教程详解


Posted in Python onFebruary 23, 2021

前面一篇我们已经把unittest的常用用法都已经讲过了,可能很多小伙伴有个疑问,unittest框架怎么做数据驱动呢?这节我们就来学习一下。
1、unittest 没有自带数据驱动功能。
所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成。
DDT是 “Data-Driven Tests”的缩写。
资料:http://ddt.readthedocs.io/en/latest/
2、什么是ddt?
测试步骤相同,代码一样,测试数据不同,当我们输入一组测试数据的时候,测试框架会自动生成独立的多个测试用例的方法,这就是ddt。(个人理解)
注意:ddt不等于数据驱动,ddt只是实现了数据驱动思想

首先,我们需要下载包,下载方法如下:

Python接口自动化系列之unittest结合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)

我么执行看一下结果:

Python接口自动化系列之unittest结合ddt的使用教程详解

在看一下HTML的结果报告:

Python接口自动化系列之unittest结合ddt的使用教程详解

3、下面我们就说一下在实际框架中ddt是如何使用的
实际框架中只不过测试数据不是放在代码里,代码要做数据分离,实际是把数据放在Excel,或者yaml,或者json文件中,等等吧,作者实际框架中用的最多的都是这三种。
1)我么你先看一下测试数据放在json中,先建一个json文件

Python接口自动化系列之unittest结合ddt的使用教程详解

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)

执行查看结果如下:

Python接口自动化系列之unittest结合ddt的使用教程详解

2)我么你在看一下测试数据放在yaml中,先建一个yaml文件

到此这篇关于Python接口自动化系列之unittest结合ddt的使用教程详解的文章就介绍到这了,更多相关Python接口自动化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之正规地说一句话
Sep 28 Python
在Python中处理XML的教程
Apr 29 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
python实现银行管理系统
Oct 25 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
Python面试不修改数组找出重复的数字
May 20 Python
python利用opencv实现颜色检测
Feb 23 #Python
详解Python中openpyxl模块基本用法
Feb 23 #Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 #Python
如何用Python和JS实现的Web SSH工具
Feb 23 #Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 #Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 #Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 #Python
You might like
Terran热键控制
2020/03/14 星际争霸
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
最佳JS代码编写的14条技巧
2011/01/09 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
jquery replace方法去空格
2017/05/08 jQuery
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
Vue中props的详解
2019/05/16 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
大学生工作推荐信范文
2013/12/02 职场文书
法学个人求职信范文
2014/01/27 职场文书
母亲节感恩寄语
2014/02/21 职场文书
高中军训感言1000字
2014/03/01 职场文书
法制报告会主持词
2014/04/02 职场文书
爱情保证书大全
2014/04/29 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
长城导游词300字
2015/01/30 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
python图片灰度化处理的几种方法
2021/06/23 Python