当前位置: 首页 > 知识库问答 >
问题:

如何在JMeter中使用groovy将JSON响应从http请求传递到jsr223断言?

王炜
2023-03-14

我有一个API返回以下结果:

{"success":true,
  "error":null,
  "data": {"EmpId":444,"ProfileNo":0,"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}}
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断言失败:false断言失败消息:javax.script.scriptexception:org.codehaus.groovy.control.multipleCompilationerrorsexception:startup failed:script20.groovy:10:预期“}”,发现“:”@第10行,第81.rev.getResponseData({“success”:true,^

1错误

共有1个答案

濮阳耀
2023-03-14

正确的代码如下所示:

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或JSONAssert库,请查看使用JMeter比较REST API响应的最简单方法文章了解更多细节。

 类似资料:
  • 但是根据目前的需求,我们需要从mongodb中获取数据,将这些动态值传递给HTTP请求采样器,我的意思是我们需要根据数据库中的动态值构建HTTP请求采样器? 你能不能请谁帮我一下。

  • 问题内容: 我正在尝试使用 nodejs 和 请求 [2] 向google QPX Express API [1]发出HTTP POST请求。 我的代码如下: 我想做的是使用multipart参数[3]传递JSON。但是我没有正确的JSON响应,而是收到一个错误(未定义400)。 当我使用CURL使用相同的JSON和API密钥发出请求时,它工作正常。因此,我的API密钥或JSON没错。 我的代码有

  • 问题内容: 我是liferay portlet开发的初学者,我正在开发一个接收http get请求,处理一些信息并且必须返回json对象的portlet。我的问题是我的Portlet发送了整个html页面,而不仅仅是json对象。这是我的代码: 我在doView()方法中执行此操作,我知道这不是最佳做法,但目前我对此并不关心。有人可以向我解释如何仅返回json对象,但我阅读了有关serveResp

  • 现在,根据响应,我希望在JSR223断言中验证响应是否基于chgId字段是正确的。这意味着在两个“data”数组“chgid”中都应该出现405文本。 有人能建议吗?

  • 我试图读取在POST请求的正文中传递的内容,或者使用REST保证库的请求规范或响应对象。我找不到任何方法可以返回传递的正文内容。有什么帮助吗? 我试图打印JSONBody通过测试()在PerformPOST操作()

  • 红色矩形中样本结果的度量值等于0。没有可供查看的响应数据(标题和正文)。 是否可以在采样结果选项卡中获得实数而不是0 0 0 0 0 0 0,并在响应数据选项卡中获得可见的响应?