Karate 空手道For循环根据模式获取ID,然后使用删除功能
我收到一个API调用的响应,该调用为我提供了一个设备列表,每个设备都有一个id。其中一些设备是id以前缀“test”开头的测试设备,例如Test319244 我只希望检索那些前缀为“Test”的ID,它们可能位于数组中,并且能够将它们传递给另一个功能文件,该文件将设备ID作为参数来删除它。基本上我想删除所有的测试设备 下面是包含所有设备ID的示例响应Karate 空手道For循环根据模式获取ID,然后使用删除功能,karate,Karate,我收到一个API调用的响应,该调用为我提供了一个设备列表,每个设备都有一个id。其中一些设备是id以前缀“test”开头的测试设备,例如Test319244 我只希望检索那些前缀为“Test”的ID,它们可能位于数组中,并且能够将它们传递给另一个功能文件,该文件将设备ID作为参数来删除它。基本上我想删除所有的测试设备 下面是包含所有设备ID的示例响应 { "items": [ { "deviceId": &q
{
"items": [
{
"deviceId": "004401784033074000",
"deviceType": "AVMAP_TMR",
"disabled": false,
"metadata": {
"createdAt": "2020-07-20T00:00:00.000+00:00",
"modifiedAt": "2020-07-20T00:00:00.000+00:00"
}
},
{
"deviceId": "Test319246",
"deviceType": "AVMAP_TMR",
"disabled": false,
"metadata": {
"createdAt": "2020-07-21T00:00:00.000+00:00",
"modifiedAt": "2020-07-21T00:00:00.000+00:00"
}
},
{
"deviceId": "Test319245",
"deviceType": "AVMAP_TMR",
"disabled": false,
"metadata": {
"createdAt": "2020-07-21T00:00:00.000+00:00",
"modifiedAt": "2020-07-21T00:00:00.000+00:00"
}
},
{
"deviceId": "Test319244",
"deviceType": "AVMAP_TMR",
"disabled": false,
"metadata": {
"createdAt": "2020-07-21T00:00:00.000+00:00",
"modifiedAt": "2020-07-21T00:00:00.000+00:00"
}
},
{
"deviceId": "command-service",
"deviceType": "service",
"disabled": false,
"metadata": {
"createdAt": "2020-07-20T00:00:00.000+00:00",
"modifiedAt": "2020-07-20T00:00:00.000+00:00"
}
},
{
"deviceId": "kafka-connect-all",
"deviceType": "kafka-connect",
"disabled": false,
"metadata": {
"createdAt": "2020-07-20T00:00:00.000+00:00",
"modifiedAt": "2020-07-20T00:00:00.000+00:00"
}
}
],
"metadata": {
"pagination": {
"limit": 50,
"offset": 0,
"previousOffset": 0,
"nextOffset": 0,
"totalCount": 15
},
"sortedBy": [
{
"field": "deviceId",
"order": "ASC"
}
]
}
}
在上面的示例中,我只想删除ID为Test319244、Test319245和Test319246的设备
如何根据模式(Testxxxxxx)获取ID数组并将其传递给另一个功能文件
我需要帮助来定义ID数组,如:
* def ids = extract the ids based on the pattern
# pass the ids to the delete feature which would send the id one at a time and delete the device.
* def delete = call(delete.feature) ids
以下是“删除方案”功能文件的外观:
Scenario: Delete Device
# device_registry_url defined in karate-config.js
Given url device_registry_url
And path '/device/'+DeviceID
And header Authorization = authheader
And request ''
When method delete
Then status 200
这是正确的方法还是我们可以用更好的方法?如果是这样的话,有人能帮忙吗?只要使用
karate.filter()
,你就知道该怎么做了:
* def fun = function(x){ return x.deviceId.startsWith('Test') }
* def filtered = karate.filter(response.items, fun)
* call read('delete.feature') filtered
谢谢你,彼得。这是非常有用的。我试着用同样的方法获取索引,但之后就被卡住了。这是一种简单易行的方法。再次感谢你。