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实现批量改文件名称的方法
May 25 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
20个常用Python运维库和模块
Feb 12 Python
Python 硬币兑换问题
Jul 29 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
Python用input输入列表的实例代码
Feb 07 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
python 如何读、写、解析CSV文件
Mar 03 Python
python 如何执行控制台命令与操作剪切板
May 20 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
多重?l件?合查?(一)
2006/10/09 PHP
自动分页的不完整解决方案
2007/01/12 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python正则实现计算器功能
2017/12/14 Python
python检测IP地址变化并触发事件
2018/12/26 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
商场中秋节活动方案
2014/02/07 职场文书
《日月潭》教学反思
2014/02/28 职场文书
团日活动总结书格式
2014/05/08 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
作风转变年心得体会
2014/10/22 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
婚礼新人答谢词
2015/01/04 职场文书
导游词怎么写
2015/02/04 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL