如何对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,如果不匹配(缺少强制键或值的数据类型错误),您将收到通知。

更多信息: