SoapUI脚本断言可用于验证键,而无需验证键中的值

时间:2018-06-26 11:43:53

标签: json groovy soapui assertions

我有一个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

1 个答案:

答案 0 :(得分:3)

您快到了。只需获取键,对其进行排序并进行比较。

更改自:

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'