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网络编程学习笔记(五):socket的一些补充
Jun 09 Python
打包发布Python模块的方法详解
Sep 18 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
快速了解Python中的装饰器
Jan 11 Python
Python 类的特殊成员解析
Jun 20 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
Python matplotlib多个子图绘制整合
Apr 13 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中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Python爬取某平台短视频的方法
2021/02/08 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
机械电子工程毕业生自荐信
2013/11/23 职场文书
运动会广播稿400字
2014/01/25 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
入党函调证明材料
2014/12/24 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL