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
答案 0 :(得分:2)
使用Background:
部分。这是一个example。
编辑:Background:
中的变量if将针对标准测试框架“设置”行为的每个场景重新初始化。如果您希望初始化只发生一次,则可以使用callonce
。
如果您尝试在一个场景中修改变量并期望它在下一个Scenario
开始时具有该修改后的值,那么您误解了Scenario
的概念。只需将您的步骤合并为一个Scenario
,因为请考虑一下:这是您尝试测试的“ flow ”。
每个Scenario
都应该可以运行独立。将来,Scenario
- s的执行顺序甚至可以是随机的或并行运行。
解释这一点的另一种方法是 - 如果你注释掉一个Scenario
,其他的应该继续工作。
请不要将Scenario
视为“记录”测试重要部分的方法。您始终可以使用评论(例如# foo bar
)。
您可以使用call
轻松重复使用代码,因此您不必担心代码重复是否会成为问题。