python使用ddt过程中遇到的问题及解决方案【推荐】


Posted in Python onOctober 29, 2018

前言:

在使用DDT数据驱动+HTMLTestRunner输出测试报告时遇到过2个问题:

1、生成的测试报告中,用例名称后有dict() -> new empty dictionary

2、使用ddt生成的用例名称无法更改

python使用ddt过程中遇到的问题及解决方案【推荐】

1、用例名称后有dict() -> new empty dictionary

报告中用例名称后有dict() -> new empty dictionary,如图所示:

python使用ddt过程中遇到的问题及解决方案【推荐】

解决方案:这是ddt高版本1.2.0的bug

1、cmd先通过pip uninstall ddt 卸载ddt,

2、然后再安装一个低版本的ddt,命令pip install ddt==1.1.3

python使用ddt过程中遇到的问题及解决方案【推荐】

安装后再运行程序,结果如下

python使用ddt过程中遇到的问题及解决方案【推荐】

2、使用ddt生成的用例名称无法更改

如上图所示测试用例名称都是test_api_index,运行结果无法看出用例执行的是哪条数据,翻阅网上的资料找到一个比较好的方法,讲解比较详细,这段内容来自链接https://www.cnblogs.com/Simple-Small/p/9230382.html

ddt源码中有个函数用来生成用例名称, mk_test_name

它接收两个参数:name 和 value.

name:为测试用例的名字。即test_api.

value:为测试数据,ddt是处理一组测试数据。而这个value就是这一组数据中的每一个测试数据。

对value的值是有限制的:要么就是单值变量,要么就是元组或者列表并且要求元组和列表中的数据都是单值变量。如("name","port") 、["name","port"]

如果传进来的测试数据,不符合value的要求,那么测试用例名字为:name_index。

如果传进来的测试数据,符合value的要求,那么测试用例名字为:name_index_value。如果value为列表或者元组,那么将列表/元组的每个数据依次追加在末尾。

比如传进来的name值为test_login,value值为["name","port"]。那最终的测试用例名字是:test_login_01_name_port。

如果传进来的name值为test_login,value值为{"userName":"18500384561", "password":"123456"},那最终的测试用例名字为:test_login_1。 因为它不支持对字典类型的数据处理 。

而我的接口自动化框架中,ddt处理的数据是一列表:列表当中每个数据都为字典。ddt一遍历整个列表,那传给value的值刚好是字典。。

所以我得到的测试用例名称就是:test_login_1,test_login_2,test_login_3

python使用ddt过程中遇到的问题及解决方案【推荐】

为了让我的测试报告,呈现的更好。那就改改ddt源码,让它能够适应我的框架。

考虑两个问题:

1、不同接口的测试用例名字如何来??

2、如何让ddt支持对字典的处理??

解决方案:

第一个问题:每一个测试用例主动提供一个用例名字,说明你是什么接口的什么场景用例。比如:接口名_场景名。login_success、login_noPasswd、login_wrongPasswd等。

在我的框架当中,每一个测试用例是一个字典。那么我就在字典中添加一个键值对,case_name=用例名称

第二个问题:在ddt中添加对字典的处理,如果字典中有case_name字段,则将字典中键名为case_name的值作为测试用例名称中的value值。

修改后的ddt源码为(红色粗体部分为修改的内容):

python使用ddt过程中遇到的问题及解决方案【推荐】

更改代码后再执行,结果如下:

python使用ddt过程中遇到的问题及解决方案【推荐】

总结

以上所述是小编给大家介绍的python使用ddt过程中遇到的问题及解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现自动登录人人网并访问最近来访者实例
Sep 26 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
python多线程同步之文件读写控制
Feb 25 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 #Python
PyCharm设置护眼背景色的方法
Oct 29 #Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 #Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 #Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 #Python
pycharm 配置远程解释器的方法
Oct 28 #Python
解决每次打开pycharm直接进入项目的问题
Oct 28 #Python
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
推荐一篇入门级的Class文章
2007/03/19 PHP
附件名前加网站名
2008/03/23 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PDO::quote讲解
2019/01/29 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
10张动图学会python循环与递归问题
2021/02/06 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
中药专业自荐信范文
2014/03/18 职场文书
求职信名称怎么写
2014/05/26 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
爱心捐款感谢信
2015/01/20 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
css3 文字断裂效果
2022/04/22 HTML / CSS
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android