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爬虫抓取手机APP的传输数据
Jan 22 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python网页解析器使用实例详解
May 30 Python
python软件都是免费的吗
Jun 18 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
在终端启动Python时报错的解决方案
Nov 20 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
Python 中 Shutil 模块详情
Nov 11 Python
Python Flask实现进度条
May 11 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
Oracle 常见问题解答
2006/10/09 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
基本DOM节点操作
2017/01/17 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
理解Python中的类与实例
2015/04/27 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
哪些是python中web开发框架
2020/06/17 Python
Python 爬虫的原理
2020/07/30 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
环境工程专业自荐信
2014/03/03 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
办理信用卡工作证明
2014/09/30 职场文书
死亡赔偿协议书
2015/01/28 职场文书
创业计划书之美甲店
2019/09/20 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL