You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate框架中跨不同URL场景传递数据驱动测试数据的方法

Karate框架中跨场景传递数据驱动测试参数的实现方法

你的核心需求是让Scenario Outline里的每组测试数据,都能传递给被调用的Scenario2,分别执行两个场景后比对响应结果。原代码的问题在于调用Scenario2时没有传递参数,导致Scenario2无法获取<id>和<name>的值,无法正常发起请求。

修改后的完整代码

Scenario Outline: 1st Scenario
    * url "XYZ url"
    * request {id: <id>, name: <name>}
    * method POST
    * def response1 = response  # 保存当前场景的响应
    # 调用Scenario2并传递当前组的测试参数
    * def scen2Result = call read('@Scen2') { id: <id>, name: <name> }
    * def response2 = scen2Result.response  # 获取Scenario2的响应
    # 比对两个场景的响应结果
    * match response1 == response2

Examples:
    | id | name   |
    | 1  | Tripti |
    | 2  | Tan    |

@Scen2 @ignore
Scenario: 2nd Scenario
    * url "ABC url"
    # 直接使用传入的id和name参数,无需用< >包裹
    * request {id: id, name: name}
    * method POST

关键修改说明

  • 参数传递:在call语句中通过花括号{}把当前Scenario Outline的<id>和<name>作为参数传递给Scenario2,这样Scenario2的上下文里就会有这两个变量。
  • 变量引用:Scenario2中直接使用id和name即可,不需要再用< >,因为call操作会自动把参数注入到被调用场景的作用域中。
  • 响应保存:明确保存两个场景的响应结果,避免变量覆盖,确保比对的是对应组数据的响应。

这样修改后,Examples里的每组数据都会触发一次完整流程:执行Scenario1、传递参数给Scenario2执行、比对两组响应,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Tripti Paliwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:17:07