Karate 空手道-我怎样才能传递参数作为钥匙?
我有以下情况,需要使用firstKeyStr作为密钥,我的代码现在将“#firstKeyStr”视为密钥,而不是存储在其中的密钥 代码Karate 空手道-我怎样才能传递参数作为钥匙?,karate,Karate,我有以下情况,需要使用firstKeyStr作为密钥,我的代码现在将“#firstKeyStr”视为密钥,而不是存储在其中的密钥 代码 Given path '/api/v1/sites' When method get Then status 200 And match response.success == true And match response.data == "#object" * def keys = karate.keys
Given path '/api/v1/sites'
When method get
Then status 200
And match response.success == true
And match response.data == "#object"
* def keys = karate.keysOf(response.data)
* def firstKeyStr = keys[0]
And match response.data."#firstKeyStr" == "#object"
Json响应正文
{
"success": true,
"data": {
"5ef34d0ca5a3c56ae14d2a23": {
"devices": [
"5f03192010a47f3e5b714193"
],
"groups": [
"5f0d9f30ef89e22778a2d230"
],
"users": [],
"triggers": [],
"alerts": [
"5f0d92b967bac60b84d3989b"
],
"name": "test",
"country": "US",
]
}
}
我正在寻找一种在此行中传递此动态键(5ef34d0ca5a3c56ae14d2a23)的方法(并匹配response.data.“#firstKeyStr”==“#object”)使用圆括号,以便使用JS而不是JsonPath:
* def response = { data: { a: 1, b: 2 } }
* def keys = karate.keysOf(response.data)
* def first = keys[0]
* match (response.data[first]) == 1
由于您是堆栈溢出新手,请阅读以下内容以获得最佳帮助: 正如Peter所说,您的JSON格式不好,并且不能保证键的顺序(除非您只有一个键)。下面的代码应该可以帮助您继续 示例代码:
Feature: firstKey
Scenario: firstKey
* def resp =
"""
{
"success": true,
"data": {
"5ef34d0ca5a3c56ae14d2a23": {
"devices": [
"5f03192010a47f3e5b714193"
],
"groups": [
"5f0d9f30ef89e22778a2d230"
],
"users": [],
"triggers": [],
"alerts": [
"5f0d92b967bac60b84d3989b"
],
"name": "test",
"country": "US"
}
}
}
"""
And match resp.data == "#object"
* def keys = karate.keysOf(resp.data)
* def firstKeyStr = keys[0]
* print firstKeyStr
* print (resp.data[firstKeyStr])
And match (resp.data[firstKeyStr]) == "#object"
没用。在我的例子中,firstKeyStr是一个动态客户id,类似于返回的5ef34d0ca5a3c56ae14d2a23,并在数据中包含响应object@Orjuwan我要放弃了。你的例子很不完整,我试着猜。所以按照这个过程:@PeterSmith我在我的问题中添加了更多细节,希望现在清楚了,谢谢you@Orjuwan不,我试过了,你的json格式不好。我还觉得这是一种糟糕的测试方式,json中的键顺序无法保证。请阅读
上的文档,并对每个文档进行匹配。我请求这里的其他空手道用户帮助您,我知道这是API返回的json的一部分(不是完整的),我添加它是为了解释这里的键是动态的,我不能定义resp,因为我猜不到键。您不需要定义响应。这只是一个示例代码,用于验证第一个键的值是否为有效的JSON对象,这是您在问题中的目标。你需要根据你的实际反应来调整它。哦,我明白了,谢谢你,它成功了,我是空手道新手,只用了几个星期。