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比较2个xml内容的方法
May 11 Python
Python对列表排序的方法实例分析
May 16 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
openCV提取图像中的矩形区域
Jul 21 Python
Python map及filter函数使用方法解析
Aug 06 Python
python zip()函数的使用示例
Sep 23 Python
详解python的异常捕获
Mar 03 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
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
Python算法应用实战之队列详解
2017/02/04 Python
python中的数据结构比较
2019/05/13 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python 多线程中join()的作用
2020/10/29 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
国际贸易本科毕业生求职信
2014/09/26 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
色戒观后感
2015/06/12 职场文书
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android