请求响应结果很长,应该如何断言?

在接口响应数据中,大多情况下是使用json path表达式提取响应结果中的某一字段,进行单一字段断言
如果要进行全字段断言,需要使用deepdiff

deepdiff

1.匹配两个json数据格式中的数据格式和内容一致性,如果不一致就返回差异,如果一致会返回一个空字典

例1:
expect_data={"code":"200","msg":"登录成功","token":"22383846"}
actual_data={"code":"200","msg":"登录成功","token":"22383846"}
res=deepdiff(expect_data,actual_data)
print(res) # 结果是一个空字典

例2:
exjson1= { 'code': 0, "message": "成功", "data": { "total": 28, "id": 123 } } code数据类型是int
sjjson1= { 'code': "0", "message": "成功", "data": { "total": 28, "id": 123 } } code数据类型是str
res=DeepDiff(exjson1,sjjson1)
print(res) #返回结果:{'type_changes': {"root['code']": {'old_type': <class 'int'>, 'new_type': <class 'str'>, 'old_value': 0, 'new_value': '0'}}}
返回结果显示type_changes数据类型改变
除数据类型改变外,还有常用的value_changes

2.deepdiff对比时,忽略对比的属性

 * ignore_order:忽略顺序(两个列表进行对比时,如果数据一致但是顺序不一致,也会有差异)
 * ignore_string_case  忽略字母大小写
 * exclude_types  过滤数据类型
 * exclude_types[值]  过滤某个值
posted @ 2024-05-26 21:07  cherish-github123  阅读(19)  评论(0编辑  收藏  举报