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

Karate UI同文件两个场景间变量传递是否可行?附测试代码

场景间变量传递的实现方法

可以实现Karate场景间的变量传递,但你当前的写法存在问题——默认情况下karate.set()仅在当前Scenario作用域内生效,跨场景无法读取到变量值。以下是两种可行的修改方案:

方案一:使用全局变量标记

修改第一个Scenario的karate.set()调用,添加第三个参数true将变量设为全局作用域:

Scenario: 198422 - SA  
   * def showHandoverChangedValue = script(showHandoverSelect,"function(e){return $(e).val()}")
   * karate.set('showHandoverChangedValue', showHandoverChangedValue, true)

第二个Scenario中直接读取全局变量即可:

Scenario: 198422 - TA
    * def showHandoverChangedValue = karate.get('showHandoverChangedValue')
    Then match showHandoverNextElementValue == showHandoverChangedValue

方案二:通过karate.configure设置全局变量集合

在第一个Scenario中将变量存入全局变量集合:

Scenario: 198422 - SA  
   * def showHandoverChangedValue = script(showHandoverSelect,"function(e){return $(e).val()}")
   * karate.configure('vars', { showHandoverChangedValue: showHandoverChangedValue })

第二个Scenario中从全局集合中读取变量:

Scenario: 198422 - TA
    * def showHandoverChangedValue = karate.get('vars').showHandoverChangedValue
    Then match showHandoverNextElementValue == showHandoverChangedValue

注意事项

  • Karate中每个Scenario默认是独立隔离的,执行完毕后会清理当前作用域的变量,因此必须显式指定全局作用域才能实现跨场景传递。
  • 如果需要传递多个变量,方案二更适合统一管理全局变量。

内容的提问来源于stack exchange,提问作者Andrei Vartic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:14