json文件比较-json_path

在接口测试过程中,有时候会遇到需要对返回或获取到的json 数据进行比较的情况,如果json数据量较少的时候。我们可以通过手工直接找到不同。但是如果需要比较的json 数据量比较大的时候。我们就需要借助一些工具或者编写一些脚本来帮助我们实现对json 文件的比较。这里简单讲讲json_tools 这个模块中如何比较json文件

import json_tools
import json_diffrent

对于两个字典的比较

a = {‘a’: 1, ‘b’: 2, “e”: 8}
b = {‘a’: 1, ‘b’: 2, ‘e’: 8}
d = {‘b’: 2, ‘a’: 1, “e”: 8}
c = {‘a’: 1, ‘b’: 3, “d”: 5}

直接使用== 可以判断两个字典是否一样

print(a == b)
print(a == d)
print(a == c)

使用json_tools 比较两个json文件

查看json_tools 的属性

print(dir(json_tools))

比较两个json数据的变化,用法:diff(a,b) 表示,b相对与a的变化!!

res = json_tools.diff(a, c) # diff 返回的是一个列表,列表中是字典
print(res)
“”"
[{‘replace’: ‘/b’, ‘value’: 3, ‘prev’: 2},
replace:表示值不一样的键的名称
value:表示变化后即当前该键的值 也就是c列表中键b的值
prev:prev表示该键此前的值 也就是a列表中键b的值

{‘remove’: ‘/e’, ‘prev’: 8},
remove:表示c相对于a少了一个组键值对,键名称为:e
prev:c相对于a少了的键e对应的值为:8

{‘add’: ‘/d’, ‘value’: 5}]
add:表示c相对于a多了一个组键值对,键名称为:d
value:c相对于a多了的键e对应的值为:5
“”"

比较两个json文件

res1 = json_tools.diff(json_diffrent.data1, json_diffrent.data2)
print(res1)

可以发现直接使用json文件比较是不能识别出不同的地方的。需要先将json 文件转换成字典

“”"
[{‘replace’: ‘/’, ‘value’: ‘{“a”: 1, “b”: 3, “d”: 5}’, ‘prev’: ‘{“a”: 1, “b”: 2, “e”: 8}’}]
“”"

多层嵌套的比较

a = {“class”: {“1”: {“name”: “xiaoxiao”, “age”: 18, “name1”: “xiaoli”, “age1”: 20}}}
b = {“class”: {“1”: {“name”: “xiaoxiao1”, “age”: 18, “name12”: “xiaoli2”, “age1”: 20}}}

res3 = json_tools.diff(a, b)
print(res3)
“”"
[{‘replace’: ‘/class/1/name’, ‘value’: ‘xiaoxiao1’, ‘prev’: ‘xiaoxiao’},
{‘remove’: ‘/class/1/name1’, ‘prev’: ‘xiaoli’},
{‘add’: ‘/class/1/name12’, ‘value’: ‘xiaoli2’}]
“”"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值