美文网首页
python 接口diff工具:deepdiff

python 接口diff工具:deepdiff

作者: 仰望星空_4645 | 来源:发表于2020-03-08 13:33 被阅读0次

一般用做接口版本升级后前后返回的数据格式是否有误,或者两个环境的接口是否是一致
1、需要安装diff库:pip install deepdiff
2、最基本的两个json比较

from deepdiff import DeepDiff
from pprint import pprint
# t1 = {"one": 1, "two": 2, "three": 3}
# t2 = {"one": 1, "two": 4, "three": "6"}
if __name__ == "__main__":
    res = DeepDiff(t1, t2,ignore_order)
    pprint(res)
输出结果: image.png

通过diff,two的值不一样,three的类型不一样
pprint是输出格式更完整,标准化
3、忽略顺序或重复项列出差异

from deepdiff import DeepDiff
from pprint import pprint
t1 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 2, 3]}}
t2 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 3, 2, 3]}}
if __name__ == "__main__":
    res = DeepDiff(t1, t2,ignore_order=True)
    # res = DeepDiff(t1, t2)
    pprint(res)
运行结果: image.png

即两者没有差异,因为忽略了b列表的顺序及重复项
4、从比较中排除对象树的一部分,如token、uuid等容易变化的数

from deepdiff import DeepDiff
from pprint import pprint
t1 = {"for life": "vegan", "ingredients": ["no meat", "no eggs", "no dairy"]}
t2 = {"for life": "vegan", "ingredients": ["veggies", "tofu", "soy sauce"]}
if __name__ == "__main__":
    res = DeepDiff(t1, t2,exclude_paths={"root['ingredients']"})
    pprint(res)

运行结果:{},表示忽略了ingredients的对比

https://github.com/seperman/deepdiff
https://pypi.org/project/deepdiff/

相关文章

网友评论

      本文标题:python 接口diff工具:deepdiff

      本文链接:https://www.haomeiwen.com/subject/evyddhtx.html