Karate框架能否保存单个请求响应并在另一请求中使用
Karate框架跨请求复用响应内容实现方案
完全可以实现,Karate原生内置了响应提取、变量跨步骤/跨请求复用的能力,不需要额外开发自定义插件就能满足你描述的场景需求。
核心实现逻辑
Karate发起请求后会自动把完整响应内容存入内置变量response,你只需要通过def关键字把需要的响应字段提取为自定义变量,后续任意请求的请求体、请求头、参数中都可以直接引用该变量。
可直接参考的示例代码
Feature: 用户地址复用校验场景 Scenario: 传用户信息取地址后完成房屋类型校验 # 第一个请求:传入用户名、用户ID获取用户地址 Given url baseUrl + '/api/user/getAddress' And request { userId: 'U2024001', userName: '测试用户001' } When method POST Then status 200 # 从响应中提取地址字段存入变量,可根据实际响应结构调整JSON路径 * def userHomeAddress = response.data.address # 第二个请求:复用地址完成房屋类型校验 Given url baseUrl + '/api/house/typeVerify' # 请求体中直接引用前面提取的地址变量,Karate会自动完成序列化填充 And request { targetAddress: '#(userHomeAddress)', verifyItem: 'housePropertyType' } When method POST Then status 200 # 可对校验结果做断言 * match response.code == 0 * match response.data.verifyPass == true
额外说明
- 若响应为多层嵌套结构,直接按层级路径取值即可,比如
response.result.userInfo.contact.address,无需手动编写JSON解析代码 - 提取的变量默认在当前Scenario内全步骤可用,如需跨Scenario、跨Feature文件复用,可通过
karate.set()配置全局变量或调用公共Feature文件实现 - 变量为复杂对象、数组结构时,Karate会自动做格式适配,不需要手动转义特殊字符、转换JSON格式
内容的提问来源于stack exchange,提问作者Sheikh Rahman
相关产品推荐
相关产品推荐

