json - 用于验证键的 SoapUI 脚本断言存在而不验证键中的值
问题描述
我有一个 REST 请求,它将返回一个带有一组九个键和值的 json 响应。没有请求的输入值是随机的,因此每次运行时我都会得到不同的值。
可以创建一个脚本断言来验证 json 结构是否正确。
json响应:
{
"sid": 636811,
"poss": 122,
"mis": -150,
"pres": 253,
"aea": 0,
"aa": 12,
"ua": 7,
"lar": null,
"lbr": 1
}
脚本断言:
def expectedMap = [sid:'', poss:'', mis:'', pres:'', aea:'', aa:'', ua:'', lar:'', lbr:'']
def json = new groovy.json.JsonSlurper().parseText(context.response))
assert json.keySet().sort() == expectedMap.keySet().sort()
我相信我的以下脚本断言失败了,因为它也断言了键值。
log.info expectedMap.keySet().sort()
log.info json.keySet().sort()
Tue Jun 26 14:27:52 BST 2018:INFO:[aa, aea, lar, lbr, mis, poss, pres, sid, ua]
Tue Jun 26 14:27:52 BST 2018:INFO:[aa, aea, lar, lbr, mis, poss, pres, sid, ua]
log.info expectedMap.keySet().sort().getClass()
log.info json.keySet().sort().getClass()
Tue Jun 26 14:17:12 BST 2018:INFO:class java.util.ArrayList
Tue Jun 26 14:17:12 BST 2018:INFO:class java.util.TreeMap$KeySet
解决方案
你快到了。只需要获取密钥,对它们进行排序并进行比较。
更改自:
assert expectedMap == json, 'Actual response is not matching with expected data'
至:
assert expectedMap.keySet().sort() == json.keySet().sort() as List, 'Actual response is not matching with expected data'
推荐阅读
- laravel - Laravel Eloquent 组的关系结果
- php - 放大 federatedSignIn 返回没有范围的 accessToken
- c - 为什么我不能在 ATMEGA64A-AU 串口中输入命令?
- reactjs - React Firebase useList 钩子中的 Firebase .once()
- python - 如何在递归调用中只打印一次语句?Python
- excel - 如何从excel vba表单中的文本框文本填充组合框值
- java - 二级缓存如何影响hibernate中的批处理?
- database - 如何在 odoo v13 postgresql 数据库中更新或更改成本价格(标准价格)?
- enums - 如何将枚举值传递给函数?
- c# - 捕获异常后如何返回第一个输入?