groovy - 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",
]
解决方案
因此,您将获得返回的项目列表(包含单个项目)
假设您从不期望超过一件,您可以通过以下方式检查它的大小:
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";
}
推荐阅读
- laravel - 如何在 docker 容器中重新启动 Laravel 队列工作者?
- javascript - 无效的正则表达式:无效的组说明符名称 - 在任何 iOS 设备上中断的正则表达式
- php - Laravel Vuejs 中的服务器端处理数据表
- python - 将最小值和最大值标记为阴影点?
- java - 将当前行与上一行进行比较。爪哇
- c++ - 您何时收到 GVSP 状态代码 0x800C :请求的数据包不再可用?
- ios - 为什么通过 bundleId API 查找不返回结果?
- c# - 使用泛型表达式简化类的创建
- android - 如何使用 MVVM 在 Recycler 视图中更新按钮状态 [Enabled, Loading, Disabled]
- selenium - 是否有任何方法返回与 js selenium 中的页面关联的 WebWorkers?