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实现的简单万年历例子分享
Apr 25 Python
Python简单实现enum功能的方法
Apr 25 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python高级property属性用法实例分析
Nov 19 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
Django模板获取field的verbose_name实例
May 19 Python
keras.layer.input()用法说明
Jun 16 Python
python 录制系统声音的示例
Dec 21 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
js自带函数备忘 数组
2006/12/29 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Python3 中文文件读写方法
2018/01/23 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
用python实现学生管理系统
2020/07/24 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
追悼会上的答谢词
2014/01/10 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
运动会开幕词
2015/01/28 职场文书
升职自荐信怎么写
2015/03/05 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python