我在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”字段
有什么主意吗?
预先感谢
答案 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')}
更多信息:
演示:
答案 1 :(得分:0)
如果值不是您对id字段的关注,则可以直接使用regex匹配器通过指定jsonpath并使用Jsonassertion来检查该字段,并将匹配项作为regex使用regex进行检查