karate - 如何在 Karate 中找到动态键值?

标签 karate

我正在点击 JIRA API 以根据周期名称获取周期 ID

API : http://localhost:8080/rest/zapi/latest/cycle?projectId=78654&versionId=123

我收到以下回复:

{

"1345": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "First cycle",
    "totalFolders": 0,
    "projectId": 78654
},
"5789": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "Karate DEMO",
    "totalFolders": 0,
    "projectId": 78654
},
"6543": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "Second Cycle",
    "totalFolders": 0,
    "projectId": 78654
},
"recordsCount": 3
}

这里的 Id 是动态的,即 1345,5789,6543

如何使用 Karate jsonpath 获取 ID,即 5789,其中名称为“Karate 演示”

最佳答案

使用 JSON 转换来更改形状,从而更容易执行 JsonPath。您还可以找到数据,因为 karate.forEach() 是一个“扫描”:https://github.com/intuit/karate#json-transforms

* def list = []
* def fun = function(k, v){ karate.appendTo('list', { key: k, val: v } )}
* karate.forEach(response, fun)
* def keys = $list[?(@.val.name=='Karate DEMO')].key

关于karate - 如何在 Karate 中找到动态键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64639635/

相关文章:

javascript - 在 Karate 中循环使用不同参数的相同特征文件

karate - 如何将全局变量传递到可重用功能类路径?

karate - 如何参数化 Karate 中 Jenkins 的 cucumber 选项标签

karate - 我的目标文件夹中没有 html 报告

json - Karate - 如何导入 json 数据

api - 如何在 Karate 特征文件中传递体型?

java - Karate :使用 JUnit5 的运行者类(class)

testing - 从命令行运行 Karate 测试会返回surefire-plugin 错误

nested - 如何验证 Karate 中嵌套 json 数组中的元素?

karate - 匹配响应,同时忽略数组顺序