Karate是否支持一种功能,您可以在该功能中定义场景中的变量,并在同一功能文件的其他场景中重复使用该功能 . 我试过做同样的但得到一个错误 . 在同一个功能文件中重用变量的最佳方法是什么?
Scenario: Get the request Id
* url baseUrl
Given path 'eam'
When method get
Then status 200
And def reqId = response.teams[0]resourceRequestId
Scenario: Use the above generated Id
* url baseUrl
* print 'From the previous Scenario: ' + reqId
错误:
Caused by: javax.script.ScriptException: ReferenceError: "reqId" is not defined in <eval> at line number 1
1 回答
使用
Background:
部分 . 这是example .编辑:如果
Background:
中的变量将针对标准测试框架"set up"行为的每个场景重新初始化 . 如果希望初始化仅发生一次,则可以使用callonce .如果您尝试在一个场景中修改变量并期望在下一个
Scenario
开始时它现在具有该修改后的值,那么您误解了Scenario
的概念 . 只需将您的步骤合并为一个Scenario
,因为想一想:这就是您要测试的“流程” .每个
Scenario
应该能够运行 stand-alone . 将来,Scenario
-s的执行顺序甚至可以是随机的或并行运行 .解释这一点的另一种方法是 - 如果你注释掉一个
Scenario
其他的应该继续工作 .请不要将
Scenario
视为测试重要部分的一种方式 . 您始终可以使用评论(例如# foo bar
) .您可以使用_1866812轻松地重复使用代码,因此您不必担心代码重复是否会成为问题 .