Jmeter 使用jsr223断言验证响应

Jmeter 使用jsr223断言验证响应,jmeter,jmeter-5.0,Jmeter,Jmeter 5.0,我已在get HTTP请求中将chgId作为参数传递。 https://****?chgId=405 我的api响应如下:- { "response": { "data": [ { "tid": 3697, "chgId": 405, "amount": 8.5, "Currency": &

我已在get HTTP请求中将chgId作为参数传递。 https://****?chgId=405

我的api响应如下:-

{
  "response": {
    "data": [
      {
        "tid": 3697,
        "chgId": 405,
        "amount": 8.5,
        "Currency": "USD",
       },
      {
        "tid": 3698,
        "chgId": 405,
        "amount": 3.33,
        "Currency": "USD",
       
      }
    ]
  }
}
现在,从我想在JSR223断言中验证的响应来看,基于chgId字段的响应是正确的。这意味着在两个“数据”数组中,“chgId”:405应该是文本


有人能提出建议吗?

你可以这样做:

def params = org.apache.http.client.utils.URLEncodedUtils.parse(prev.getURL().toURI(), 'UTF-8')

def expected = params.find { 'chgId' }.value as int

def actual1 = new groovy.json.JsonSlurper().parse(prev.getResponseData()).response.data[0].chgId
def actual2 = new groovy.json.JsonSlurper().parse(prev.getResponseData()).response.data[1].chgId

def success = (expected == actual1 && expected == actual2)

if (!success) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('chgId mismatch')
}
其中,
prev
表示previous

更多信息: