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 if not in 多条件判断代码
Sep 21 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
python如何通过twisted实现数据库异步插入
Mar 20 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
Python中Numpy ndarray的使用详解
May 24 Python
Python collections模块使用方法详解
Aug 28 Python
浅析PEP572: 海象运算符
Oct 15 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
Python中lru_cache的使用和实现详解
Jan 25 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python正则表达式经典入门教程
2017/05/22 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
青春寄语大全
2014/04/09 职场文书
环保倡议书100字
2014/05/15 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
财政局个人年终总结
2015/03/03 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js