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 08 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
python列表的增删改查实例代码
Jan 30 Python
python应用文件读取与登录注册功能
Sep 23 Python
Python字节单位转换实例
Dec 05 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
Django 构建模板form表单的两种方法
Jun 14 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
python使用numpy中的size()函数实例用法详解
Jan 29 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
PHP 快速排序算法详解
2014/11/10 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
使用C++扩展Python的功能详解
2018/01/12 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
8种常用的Python工具
2020/08/05 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
超市5.1促销活动
2014/01/15 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书
《童趣》教学反思
2014/02/19 职场文书
贷款委托书
2014/08/01 职场文书
2014年德育工作总结
2014/11/20 职场文书
2014年实习生工作总结
2014/11/27 职场文书
文明单位创建材料
2014/12/24 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS