【问题标题】:Issue with groovy response assertion script in jmeterjmeter中的groovy响应断言脚本问题
【发布时间】:2019-06-19 07:50:14
【问题描述】:

我想使用 groovy 脚本为响应断言编写代码,响应数据如下:

[
    {
        "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 脚本对此提供的帮助。

[

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

]

【问题讨论】:

  • jsonResponse[ 0 ]........ 应该可以解决问题
  • 你有一个地图列表。你的支票是为一张地图写的。您必须迭代列表并在该迭代中进行检查(例如,使用 foreach

标签: groovy jmeter jmeter-4.0


【解决方案1】:

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

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

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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多