Karate接口测试如何逐个提取动态ID作为GET请求URL参数
Karate遍历动态ID批量发起请求方案
你之前拿到的ID变量是数组类型,直接拼接进路径会自动转为逗号分隔的字符串,才会出现多个ID拼接的问题,按以下步骤调整即可:
- 首先修正JSONPath的大小写问题:你返回的响应中ID字段是大写
Id,之前写的小写id会导致提取异常 - 用Karate内置的
karate.forEach方法遍历ID数组,逐个发起请求
正确代码示例:
# 此处省略你之前调用POST接口的代码 # 正确提取所有ID组成数组 def idList = karate.jsonPath(response, '$.content[*].Id') # 遍历ID数组逐个调用GET接口 karate.forEach(idList, function(currentId) { Given url 'https://localhost:8080' # path支持多参数自动拼接,无需手动拼接字符串 And path currentId, 'id' When method GET Then status 200 # 可在此处添加你需要的其他断言逻辑 })
如果需要收集每个GET请求的返回结果,可新增数组存储:
def getResults = [] karate.forEach(idList, function(currentId) { Given url 'https://localhost:8080' And path currentId, 'id' When method GET Then status 200 # 存储当前请求的响应结果 karate.append(getResults, response) })
内容的提问来源于stack exchange,提问作者cha dee
相关产品推荐
相关产品推荐

