首页 > 解决方案 > jmeter中的groovy响应断言脚本问题

问题描述

我想使用 groovy script 为响应断言编写代码,对于这样的响应数据:

[
    {
        "fieldId":"947bb60f",
        "id":"e7b8ad2b",
        "name":"field",
    }
]

尝试使用以下我收到错误的 groovy 脚本(失败消息)。

if (!jsonResponse.keySet().containsAll(["fieldId","id","name"] )) {
         failureMessage += "The json response body has wrong structure or error msg.\n\n";

}

相同的脚本在单树结构下运行良好,如下所示。感谢您对 groovy script 的帮助。

[

  "fieldId":"947bb60f",
  "id":"e7b8ad2b",
  "name":"field",

]

标签: groovyjmeterjmeter-4.0

解决方案


因此,您将获得返回的项目列表(包含单个项目)

假设您从不期望超过一件,您可以通过以下方式检查它的大小:

if (jsonResponse.size() != 1) {
     failureMessage += "Expected one item, got ${jsonResponse.size()}.\n\n";
}

然后,您可以使用以下方法获取第一个元素:

def jsonElement = jsonResponse[0]

并检查字段名称:

if (jsonElement.keySet() != ["fieldId","id","name"] as Set) {
     failureMessage += "Unexpected fields in response ${jsonElement.keySet()}.\n\n";
}

推荐阅读