如何使用空手道遍历动态数组?
How to traverse a dynamic array using karate?
我正在打 api -> http://127.0.0.1:5000/api/library/?book_id=2,5,13
api 的响应是:
{
"data": {
"2":{
"rack": 219,
"price": 360,
"title": "book1"
},
"5":{
"rack": 309,
"price": 230,
"title": "book2"
},
"13":{
"rack": 112,
"price": 200,
"title": "book3"
}
},
"status_code": 200
}
键 2、5、13 是可变的,具体取决于 api 参数。
我写了下面的代码=>
Feature: Verify Library API
Scenario: Verify book prices
* def id1 = 2
* def id2 = 5
* def id3 = 13
Given url 'http://127.0.0.1:5000/api/library/?book_id='+ id1 +',' + id2 + ',' + id3
When method get
Then status 200
* def id1_price = $.data.#(id1).price
* assert id1_price == 360
我无法在变量中获取 book1 的价格值,导致断言失败。如何使用变量 "id1"?
获取价格
当您有动态 JsonPath 表达式时,请使用 karate.jsonPath()
API。试试这个:
* def id1_price = karate.jsonPath(response, "$.data." + id1 + ".price")
我正在打 api -> http://127.0.0.1:5000/api/library/?book_id=2,5,13
api 的响应是:
{
"data": {
"2":{
"rack": 219,
"price": 360,
"title": "book1"
},
"5":{
"rack": 309,
"price": 230,
"title": "book2"
},
"13":{
"rack": 112,
"price": 200,
"title": "book3"
}
},
"status_code": 200
}
键 2、5、13 是可变的,具体取决于 api 参数。
我写了下面的代码=>
Feature: Verify Library API
Scenario: Verify book prices
* def id1 = 2
* def id2 = 5
* def id3 = 13
Given url 'http://127.0.0.1:5000/api/library/?book_id='+ id1 +',' + id2 + ',' + id3
When method get
Then status 200
* def id1_price = $.data.#(id1).price
* assert id1_price == 360
我无法在变量中获取 book1 的价格值,导致断言失败。如何使用变量 "id1"?
获取价格当您有动态 JsonPath 表达式时,请使用 karate.jsonPath()
API。试试这个:
* def id1_price = karate.jsonPath(response, "$.data." + id1 + ".price")