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
相关产品推荐
相关产品推荐

