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实现Floyd算法
Jan 03 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
实例讲解Python爬取网页数据
Jul 08 Python
基于Python实现签到脚本过程解析
Oct 25 Python
Python requests模块cookie实例解析
Apr 14 Python
python datetime时间格式的相互转换问题
Jun 11 Python
python爬取天气数据的实例详解
Nov 20 Python
python 实现端口扫描工具
Dec 18 Python
如何用用Python将地址标记在地图上
Feb 07 Python
浅谈pytorch中的dropout的概率p
May 27 Python
python实现Nao机器人的单目测距
Sep 04 Python
Python学习之迭代器详解
Apr 01 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
销售行政专员职责
2014/01/03 职场文书
消防器材管理制度
2014/01/28 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫