背景:
在接口测试中,我们会经常通过对比接口的json数据来判断接口是否异常或者变动,常规比较简单的做法是直接将这个json进行文本diff,这样也是比较直观,可以参考之前写的文章,在线diff 。但是接口返回的数据中,列表并不是有序的,所以文本diff也会存在误报。怎么解决这个问题呢,其上网上有很多开源的第三方库可以选择,不需要自己再写复杂的算法逻辑
工具介绍:
主要有以下几种方式,
1、sorted 函数,使用递归进行排序比较。15万行json数据下,耗时为0.2s。结果为true或者false,要输出详细结果,需要自己额外写逻辑。
2、deepdiff 第三方库,ignore_order为排序,默认不排序。15万的数据,不排序反而需要8秒,排序结果只需要3.5s左右,有详细结果输出,不需要自己写逻辑,而且还有很多参数可以,比如忽略大小写字母,ignore_string_case=True。数组数据重复参数过滤等
deepdiff 参考文档
https://www.cnblogs.com/Neeo/articles/12785493.html
3、json_tools ,没有排序对比,不考虑!同样15万的数据下,不排序对比耗时0.2s
4、jsondiff 跟jsontools 一样,没有排序对比!而且在15万的数据下,直接卡死,弃用!
简单的测试数据,15万的json数据由于数据隐私,不对外提供