我有一个API,它返回以下结果:
{"success":true,
"error":null,
"data": {"EmpId":444,"ProfileNo":0,"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}}
我需要将JSON之上的内容传递给JSR223断言,以分别验证所有输出值。我设法写了以下脚本
import groovy.json.JsonSlurper;
JsonSlurper JSON = new JsonSlurper ();
def expected = new groovy.json.JsonSlurper().parseText(vars.get('Employee
data'))
def actual = new
groovy.json.JsonSlurper().parse(prev.getResponseData({"success":true,
"error":null,
"data":
{"EmpId":444,
"ProfileNo":0,
"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}})
if (expected != actual) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('Mismatch between expected and actual
JSON')
}
但是它失败了。我得到的错误如下:
断言错误:true 断言失败:错误 断言失败消息:javax.script.ScriptException:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: Script20.groovy:10:期望为'}',在第10行第81列中找到了':'。 rev.getResponseData({“ success”:true, ^
1个错误
答案 0 :(得分:0)
正确的代码应类似于:
def expected = new groovy.json.JsonSlurper().parseText('{"success":true,\n' +
' "error":null,\n' +
' "data": {"EmpId":444,"ProfileNo":0,"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}}')
def actual = new groovy.json.JsonSlurper().parse(prev.getResponseData())
if (expected != actual) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('Mismatch between expected and actual JSON ')
}
但是,如果您将使用该方法比较嵌套的JSON对象,则仅适用于第一级值-您会得到假阳性结果,因此最好使用Jackson或{{ 3}}执行“深度扫描”的库,请查看JSONAssert文章以了解更多详细信息。
答案 1 :(得分:0)