如何对JSON数组执行JSR223断言测试,该数组是JMeter中键的值?
How to perform JSR223 assertion test on a JSON array which is the value of a key in JMeter?
我想对 JSON 数组执行断言测试,在 JMeter 中表示如下:
{
"item": [
{
"id": "cx34ty1",
"name": "xyzitem",
"isSerialNoRequired": false,
"itemProps": {
"type": "readonly",
"count": 10
}
}
]
}
我知道可以使用 JSR223 断言来断言密钥的存在,例如。 “项目”在这种情况下使用:
if (!jsonResponse.keySet().containsAll(["item"])) {
failureMessage += "The json config element has wrong structure.\n\n";
如果我想断言数组中存在一个键,我应该怎么做,或者例如。 “id”还是“itemProps”?另外,鉴于 JSON 断言是资源密集型的,我不想使用它,因为我还想检查多个键。
您可以使用相同的方法,例如:
def jsonResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData())
if (!jsonResponse.keySet().contains('item')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('"item" element was not found')
}
if (!jsonResponse.item.get(0).keySet().contains('id') || !jsonResponse.item.get(0).keySet().contains('itemProps')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('"id" or "itemProps" element was not found')
}
但是您可以想出更好的解决方案,例如使用 JSON Schema Validator library, if you download the .jar and put it to JMeter Classpath you will be able to test JSON response against pre-defined JSON Schema,如果不匹配(缺少强制键或值的数据类型错误),您将收到通知。
更多信息:
我想对 JSON 数组执行断言测试,在 JMeter 中表示如下:
{
"item": [
{
"id": "cx34ty1",
"name": "xyzitem",
"isSerialNoRequired": false,
"itemProps": {
"type": "readonly",
"count": 10
}
}
]
}
我知道可以使用 JSR223 断言来断言密钥的存在,例如。 “项目”在这种情况下使用:
if (!jsonResponse.keySet().containsAll(["item"])) {
failureMessage += "The json config element has wrong structure.\n\n";
如果我想断言数组中存在一个键,我应该怎么做,或者例如。 “id”还是“itemProps”?另外,鉴于 JSON 断言是资源密集型的,我不想使用它,因为我还想检查多个键。
您可以使用相同的方法,例如:
def jsonResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData())
if (!jsonResponse.keySet().contains('item')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('"item" element was not found')
}
if (!jsonResponse.item.get(0).keySet().contains('id') || !jsonResponse.item.get(0).keySet().contains('itemProps')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('"id" or "itemProps" element was not found')
}
但是您可以想出更好的解决方案,例如使用 JSON Schema Validator library, if you download the .jar and put it to JMeter Classpath you will be able to test JSON response against pre-defined JSON Schema,如果不匹配(缺少强制键或值的数据类型错误),您将收到通知。
更多信息: