json - 用于验证键是否存在的 SoapUI 脚本断言,而不验证键中的值

标签 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

最佳答案

你就快到了。只需要获取 key ,对它们进行排序并比较。

更改自:

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'

关于json - 用于验证键是否存在的 SoapUI 脚本断言,而不验证键中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042106/

相关文章:

grails - 基于属性文件连接bean

ios - 如何获取新闻提要应用程序的图像

java - 定时器任务和线程

ios - 判断urlsession.shared和Json解析完成的时间

java - JSR-223 和 Groovy

Java-基于 Https 的 SOAP Web 服务

json - 使用Groovy脚本从JSON响应中一一打印特定节点的所有值

visual-studio-2010 - 用于 WCF 负载测试的负载 UI 与 Visual Studio 2010

c# - json转c#反序列化

javascript - 为什么 Google 在前面加上 while(1);到他们的 JSON 响应?