python使用ddt过程中遇到的问题及解决方案【推荐】

作者:ClaireWang 时间:2021-08-25 09:20:44 

前言:

在使用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过程中遇到的问题及解决方案网站的支持!

来源:http://www.cnblogs.com/Clairewang/p/9857921.html

标签:python,ddt
0
投稿

猜你喜欢

  • Python生成器generator原理及用法解析

    2021-10-14 14:00:13
  • python实现三次密码验证的示例

    2022-01-24 16:34:25
  • Python Pandas中布尔索引的用法详解

    2023-11-04 08:37:45
  • python logging日志模块的详解

    2021-04-27 19:16:55
  • 30个运用纸类元素网页设计的创意实例欣赏

    2009-04-20 12:49:00
  • Python3 伪装浏览器的方法示例

    2023-11-16 21:53:44
  • python利用递归方法实现求集合的幂集

    2023-06-10 09:38:12
  • python字符串格式化方式解析

    2021-06-22 14:01:46
  • python开发游戏的前期准备

    2022-01-06 12:58:01
  • ASP分页类(支持多风格变换)

    2011-04-08 10:39:00
  • python保存字典数据到csv文件的完整代码

    2023-04-09 17:02:02
  • 用javascript 转换外部链接样式

    2007-09-17 10:48:00
  • 最新anaconda安装配置教程

    2021-07-17 05:05:34
  • Python3.8安装tensorflow的简单方法步骤

    2021-03-11 23:31:42
  • python计算无向图节点度的实例代码

    2022-05-24 22:42:49
  • asp连接MYSQL数据库的连接字符串(参数OPTION)

    2009-03-09 18:24:00
  • Python如何用NumPy读取和保存点云数据

    2022-05-26 17:41:19
  • 开启Django博客的RSS功能的实现方法

    2022-06-16 02:02:04
  • 理解JavaScript中的事件 Event

    2008-03-19 11:16:00
  • python实现简易的学生信息管理系统

    2021-08-24 12:07:09
  • asp之家 网络编程 m.aspxhome.com