请求响应结果很长,应该如何断言?
在接口响应数据中,大多情况下是使用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[值] 过滤某个值