SoapUI 脚本断言以验证键是否存在而不验证键中的值
SoapUI Script Assertion to validate the keys are present without validating the values within the keys
我有一个 REST 请求,它将 return 一个 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'
我有一个 REST 请求,它将 return 一个 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'