如何使用JMeter使用1个动态字段验证整个JSON

时间:2019-03-29 11:24:14

标签: json groovy jmeter

我在JMeter中有一个JSR223断言,用于验证整个JSON响应及其工作。 问题在于,每次我在数据库中插入数据时,JSON字段之一都会更改,并且验证失败。

如何从响应验证中跳过该动态字段?

响应JSON示例:

[
  {
    "id": "273444",
    "trxDateTime": "2019-03-25T22:38:16Z",
    "merchantName": "MerchECOM1",
    "merchantTransId": "1r1vXue4qn",
    "trxType": "Payment",
    "paymentBrand": "MasterCard",
    "amount": 20.00,
    "currencyCode": "AUD",
    "status": "Declined",
    "statusResponseMessage": null,
    "customerAccount": "123456"
  }
]

JSR223断言:

def expected = new groovy.json.JsonSlurper().parseText(vars.get('expected1'))
def actual = new groovy.json.JsonSlurper().parse(prev.getResponseData())

if (expected != actual) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Mismatch between expected and actual JSON')
}

仅此而已,我无法验证动态的“ id”字段

有什么主意吗?

预先感谢

2 个答案:

答案 0 :(得分:2)

如果您对此id字段不感兴趣,只需将其从预期变量和实际响应中删除,以将断言的前两行修改为:

def expected = new groovy.json.JsonSlurper().parseText(vars.get('expected1')).each {entry -> entry.remove('id')}
def actual = new groovy.json.JsonSlurper().parse(prev.getResponseData()).each {entry -> entry.remove('id')}

更多信息:

演示:

enter image description here

答案 1 :(得分:0)

如果值不是您对id字段的关注,则可以直接使用regex匹配器通过指定jsonpath并使用Jsonassertion来检查该字段,并将匹配项作为regex使用regex进行检查