如何使用Karate将接口获取的用户ID与会话数据合并?
如何用Karate实现用户ID与会话数据的合并?
需求说明
需要从Endpoint 1获取user_id,再将其与Endpoint 2返回的会话数据列表合并,给每个会话对象添加对应的user_id字段。
输入1(Endpoint 1返回结果)
{ "_user_id": "user1" }
输入2(Endpoint 2返回结果)
[ { "_session_id": "5182d9fe-1f4f-484b-88c2-708f32cdd661" }, { "_session_id": "372cf574-2526-41ed-9a9b-77ecc50b0d66" } ]
期望输出
[ { "_user_id": "user1", "_session_id": "5182d9fe-1f4f-484b-88c2-708f32cdd661" }, { "_user_id": "user1", "_session_id": "372cf574-2526-41ed-9a9b-77ecc50b0d66" } ]
解决方案
完全可以用Karate实现,核心是利用Karate的集合操作函数karate.map遍历会话列表,注入获取到的user_id。以下是完整的Karate脚本示例:
Feature: 合并用户ID与会话数据 Scenario: 获取并合并接口返回数据 # 1. 调用Endpoint 1获取用户ID并存储 Given url "your-endpoint-1-url" When method get Then status 200 * def userId = response._user_id # 2. 调用Endpoint 2获取会话列表 Given url "your-endpoint-2-url" When method get Then status 200 * def sessionList = response # 3. 遍历会话列表,为每个会话添加user_id字段 * def mergedData = karate.map(sessionList, (sessionItem) => { sessionItem._user_id = userId; return sessionItem; }) # 可选:打印合并结果验证 * print "合并后的最终数据:", mergedData
关键说明
karate.map:Karate内置的数组遍历函数,接收数组和处理函数,返回修改后的新数组- 处理函数中直接为每个会话对象添加
_user_id字段,值为从Endpoint 1获取的userId - 如果Endpoint 2返回的是单个会话对象而非数组,只需直接给对象添加字段即可,无需遍历:
* def mergedData = response * mergedData._user_id = userId
内容的提问来源于stack exchange,提问作者Tony Thongsinthop
相关产品推荐
相关产品推荐

