脚本断言来验证键嵌套的json结构

时间:2018-09-21 07:33:52

标签: json groovy soapui assert ready-api

我正在尝试创建一个脚本断言,该断言可以验证从rest请求返回的嵌套JSON结构中的键。

我遇到的问题是我不知道响应中的值是true还是false。因此,我要进行的验证只是验证响应的结构。

预期的响应:

{
   "atd" : {
      "es" : "",
      "eu" : "",
      "ns" : "",
      "nu" : ""
   },
   "bh" : {
      "es" : "",
      "eu" : "",
      "ns" : "",
      "nu" : ""
   },
   "hw" : {
      "es" : "",
      "eu" : "",
      "ns" : "",
      "nu" : ""
   },
   "thr" : {
      "es" : "",
      "eu" : "",
      "ns" : "",
      "nu" : ""
   }
}

实际反应:

{
   "atd" : {
      "es" : false,
      "eu" : false,
      "ns" : false,
      "nu" : false
   },
   "bh" : {
      "es" : true,
      "eu" : true,
      "ns" : false,
      "nu" : false
   },
   "hw" : {
      "es" : false,
      "eu" : false,
      "ns" : false,
      "nu" : false
   },
   "thr" : {
      "es" : false,
      "eu" : false,
      "ns" : false,
      "nu" : false
   }
}

当前断言:

def expectedMap = [atd:[es:"",eu:"",ns:"",nu:""], bh:[es:"",eu:"",ns:"",nu:""],...]
def json = new groovy.json.JsonSlurper().parseText(context.response))
assert expectedMap.keySet().sort() == json.keySet().sort() as List, 'Actual response is not matching with expected data'

上面的代码在一定程度上有效,在这种情况下不会声明嵌套键。

有没有办法从响应中获取json并删除true和false值,然后从中断言?

0 个答案:

没有答案