接口测试结果字段太多,断言烦不胜烦,DeepDiff帮你一键弄好
背景
最近有学员问我,想要做一个平台对比代码之间的区别,用python如何去实现;
还有同学问我,接口的返回字段特别多,成千上万行,如何快速审核验证返回值全部字段?
那么今天就跟大家介绍一个库就可以很好实现以上两个需求。
01、deepdiff
其实满足上面需求的库有两个deepdiff和difflib,主要区别是deepdiff显示的对比效果比较简洁,但是可以设置忽略的字段,difflib显示的对比结果可以是html的,比较详细。但是由于篇幅有限,我们今天只讲deepdiff。
deepdiff模块常用来校验两个对象是否一致,并找出其中差异之处。其中提供了三个类,DeepDiff,DeepSearch和DeepHash,
官网地址:https://deepdiff.readthedocs.io/en/latest/
l DeepDiff:字典,可迭代项,字符串和其他对象的深层差异。它将递归地查找所有更改。
l DeepSearch:在其他对象中搜索对象。
l DeepHash:根据对象的内容对其进行哈希处理。
返回值的展示样式有两种,文本视图(原始)和树视图(新).
02、运行
对于测试人员用的比较多的就是DeepDiff,所以今天我们主要讲解这个类。
DeepDiff可以对字典,可迭代项,字符串和其他对象的深层差异。它将递归地查找所有更改。可以用来校验多种类型的文件内容,如txt、json、图片等......
下载
pip install deepdiff==4.3.2
案例1:校验json
demo1.json的文件内容如下:
demo2.json的文件内容如下:
示例代码如下:
运行代码的结果如下:
当两个对象中都存在,只是值不相同时,输出:
values_changed:{}
案例2:校验字典
运行效果如下:
默认是文本视图;使用树视图请添加view='tree'参数。demo1中有该字段,demo2中没有该字段就会出现dictionary_item_removed字段和详细信息;demo1中没有该字段,demo2中有该字段就会出现dictionary_item_added字段和详细信息。
案例3:可以设置参数,忽略一些字段,这个也是DeepDiff的亮点。
在实际工作断言的时候,我们不关系对象顺序或者重复项,可以在比较的时候加入 ignore_order
运行结果如下:{}
备注:
我们可以根据自己实际的项目去增加字段,比如report_repetition重复报告情况,significant_digits小数点后的显著位数,ignore_string_case是否区分大小写,字段这边就不一一列举介绍了,可以参考官网。
如果实际请求结果和预期值的json数据都一致,那么会返回{}空字典,否则会返回对比结果,根据这个特点进行断言。
项目实战:
免费的查询手机号码信息的接口。
Url地址:http://api.63code.com/tel/api.php
参数:tel = 电话号码
响应值:json数据
代码如下:
运行结果如下:
上述的第一个用例,由于实际的请求结果和预期值的json数据都一致,所以DeepDiff返回空字典,然后断言成功;而第二个用例我们修改预期值的tel字段值,所以,DeepDiff返回了对比后的结果,与预期值不符,断言失败。
03、总结
1. api 测试的时候,可以直接将全部的 json 比较,来确定是不是一样,可以少写很多代码
2. 数据库数据比较的时候也是一样可以,使用 sql 查处结果之后,直接变成 json 就可以和期望的 json 对比了
3. 还可以设置一些需要忽略的字段
小伙伴们,DeepDiff你学会了吗?有任何问题都欢迎留言哟。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
接口测试结果字段太多,断言烦不胜烦,DeepDiff帮你一键弄好相关推荐
- 接口测试结果字段太多,断言烦不胜烦,DeepDiff帮你一键解决
背景 最近有学员问我,想要做一个平台对比代码之间的区别,用python如何去实现: 还有同学问我,接口的返回字段特别多,成千上万行,如何快速审核验证返回值全部字段? 那么今天就跟大家介绍一个库就可以很 ...
- vscode一格式化就报错?各种风格问题各种报错烦不胜烦,教你如何用好vue的eslint风格配置...
前言 感觉搭建一个舒服的前端开发环境,十分的重要定制化的格式化,编辑器自带的格式化各种报错,手动改真的会死人,因此搭建一个编辑器环境必不可少,现在要讲的是vscode中如何定制vue vs code的 ...
- oracle 错误: ORA-12899:始终提示字段太大
在插入表数据时出现提示字段太大错误: 然后试着把表的数据长度改一下仍然报错.发现只要出现中文就有错误. 经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题, 解决方法: 如果 ...
- 字段太长,无法录入数据库
报错: 2017-03-13 10:16:43,159 ERROR [org.hibernate.util.JDBCExceptionReporter] - Data truncation: Data ...
- mysql 表列数 字段数 太多_数据库字段太多有什么问题
[ 在 Knightmare (梦醒时分) 的大作中提到: ] : 标 题: Re: 数据库字段太多有什么问题 : 发信站: 水木社区 (Sat Jul 30 14:35:23 2011), 站内 ...
- 计算机桌面右键,电脑鼠标右键菜单太多了?简单几招帮你清理
原标题:电脑鼠标右键菜单太多了?简单几招帮你清理 随着电脑中所安装的程序越来越多,右键菜单中的选项也都随着多了起来.这虽然说对我们使用电脑没有什么太大的影响,但是看着如此多的没用的右键菜单也是烦烦的, ...
- 成绩统计自动计算表格_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...
电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果 随着社会的整体发展节奏加快,人们的生活和工作节奏也随之加快!尤其是在职场上,高效工作是每个职场人员必须不断锻炼并掌握的专业技能.作为电气工 ...
- B站声音太小怎么办,一款插件帮你解决
B站声音太小怎么办,一款插件帮你解决! 1)原由 1.博主经常在B站观看学习视频,对于B站声音太小头疼已久. (内心吐槽:"这什么破网站啊,声音那么小,还调不大,隔壁腾讯视频PC客户端音量能 ...
- excel乘法公式怎么输入_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...
电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果 随着社会的整体发展节奏加快,人们的生活和工作节奏也随之加快!尤其是在职场上,高效工作是每个职场人员必须不断锻炼并掌握的专业技能.作为电气工 ...
最新文章
- CentOS下的DNS服务器搭建
- Eureka VS Zookeeper
- 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
- java hibernate sql,Java Hibernate中使用SQL 而不使用HQL
- SpringMVC使用ModelAndView进行重定向
- java hbase流量日志,Spark+Hbase 亿级流量分析实战(日志存储设计)
- 服务器客户端通信协议,Redis服务端-客户端通信协议
- 怎样用一个3升的杯子和一个5升的杯子装出4升水来(杯子没有刻度)?
- Ubuntu 小白起步
- python之深浅copy与id
- 药店药品管理方案,药店药品的盘点方案,假设进行药店药品的高效盘点?药品盘点步骤是?...
- Flutter TextField 去掉下划线
- 算法的陷阱:超级平台、算法垄断与场景欺骗
- Failed to create/setup connection: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
- 删除硬盘文件夹失败解决方法
- 顺序主子式的英文翻译(定义)
- 2017年学习总结-新的开始
- 【独家】微软中国开始挖人,看中搜索人才
- linux系统 opt扩容,扩容Linux系统的逻辑分区
- java开发工程师面试自我介绍_Java程序员如何进行自我介绍