背景

最近有学员问我,想要做一个平台对比代码之间的区别,用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

运行结果如下:{}

备注:

  1. 我们可以根据自己实际的项目去增加字段,比如report_repetition重复报告情况,significant_digits小数点后的显著位数,ignore_string_case是否区分大小写,字段这边就不一一列举介绍了,可以参考官网。

  2. 如果实际请求结果和预期值的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帮你一键弄好相关推荐

  1. 接口测试结果字段太多,断言烦不胜烦,DeepDiff帮你一键解决

    背景 最近有学员问我,想要做一个平台对比代码之间的区别,用python如何去实现: 还有同学问我,接口的返回字段特别多,成千上万行,如何快速审核验证返回值全部字段? 那么今天就跟大家介绍一个库就可以很 ...

  2. vscode一格式化就报错?各种风格问题各种报错烦不胜烦,教你如何用好vue的eslint风格配置...

    前言 感觉搭建一个舒服的前端开发环境,十分的重要定制化的格式化,编辑器自带的格式化各种报错,手动改真的会死人,因此搭建一个编辑器环境必不可少,现在要讲的是vscode中如何定制vue vs code的 ...

  3. oracle 错误: ORA-12899:始终提示字段太大

    在插入表数据时出现提示字段太大错误: 然后试着把表的数据长度改一下仍然报错.发现只要出现中文就有错误. 经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题, 解决方法: 如果 ...

  4. 字段太长,无法录入数据库

    报错: 2017-03-13 10:16:43,159 ERROR [org.hibernate.util.JDBCExceptionReporter] - Data truncation: Data ...

  5. mysql 表列数 字段数 太多_数据库字段太多有什么问题

    [ 在 Knightmare (梦醒时分) 的大作中提到: ] : 标  题: Re: 数据库字段太多有什么问题 : 发信站: 水木社区 (Sat Jul 30 14:35:23 2011), 站内 ...

  6. 计算机桌面右键,电脑鼠标右键菜单太多了?简单几招帮你清理

    原标题:电脑鼠标右键菜单太多了?简单几招帮你清理 随着电脑中所安装的程序越来越多,右键菜单中的选项也都随着多了起来.这虽然说对我们使用电脑没有什么太大的影响,但是看着如此多的没用的右键菜单也是烦烦的, ...

  7. 成绩统计自动计算表格_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...

    电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果 随着社会的整体发展节奏加快,人们的生活和工作节奏也随之加快!尤其是在职场上,高效工作是每个职场人员必须不断锻炼并掌握的专业技能.作为电气工 ...

  8. B站声音太小怎么办,一款插件帮你解决

    B站声音太小怎么办,一款插件帮你解决! 1)原由 1.博主经常在B站观看学习视频,对于B站声音太小头疼已久. (内心吐槽:"这什么破网站啊,声音那么小,还调不大,隔壁腾讯视频PC客户端音量能 ...

  9. excel乘法公式怎么输入_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...

    电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果 随着社会的整体发展节奏加快,人们的生活和工作节奏也随之加快!尤其是在职场上,高效工作是每个职场人员必须不断锻炼并掌握的专业技能.作为电气工 ...

最新文章

  1. CentOS下的DNS服务器搭建
  2. Eureka VS Zookeeper
  3. 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
  4. java hibernate sql,Java Hibernate中使用SQL 而不使用HQL
  5. SpringMVC使用ModelAndView进行重定向
  6. java hbase流量日志,Spark+Hbase 亿级流量分析实战(日志存储设计)
  7. 服务器客户端通信协议,Redis服务端-客户端通信协议
  8. 怎样用一个3升的杯子和一个5升的杯子装出4升水来(杯子没有刻度)?
  9. Ubuntu 小白起步
  10. python之深浅copy与id
  11. 药店药品管理方案,药店药品的盘点方案,假设进行药店药品的高效盘点?药品盘点步骤是?...
  12. Flutter TextField 去掉下划线
  13. 算法的陷阱:超级平台、算法垄断与场景欺骗
  14. Failed to create/setup connection: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
  15. 删除硬盘文件夹失败解决方法
  16. 顺序主子式的英文翻译(定义)
  17. 2017年学习总结-新的开始
  18. 【独家】微软中国开始挖人,看中搜索人才
  19. linux系统 opt扩容,扩容Linux系统的逻辑分区
  20. java开发工程师面试自我介绍_Java程序员如何进行自我介绍

热门文章

  1. 直观理解正弦函数与余弦函数
  2. 数据库进阶3--表之间的关联关系
  3. finalshell ssh隧道配置
  4. 学习游戏3D美术设计一般会用到什么软件?
  5. mysql触发器弊端_MySQL触发器的作用及弊端
  6. 关于大学生消费情况调查
  7. 共铸国云智领未来| 以数字林草之“笔” 绘就塞上江南新图景
  8. PTA 十进制转换二进制
  9. 璞真教育计算机,教学网——师生沟通的新平台.pdf
  10. AI创业者如何成为风口上独角兽