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
Error:
Caused by: javax.script.ScriptException: ReferenceError: "reqId" is not defined in <eval> at line number 1
Use a Background:
部分。这是一个example.
编辑:变量如果在Background:
将为每个场景重新初始化,这是标准测试框架“设置”行为。您可以使用钩子,例如callonce- 如果您希望初始化只发生一次。
如果您尝试在一种情况下修改变量,并希望在下一种情况下它现在具有修改后的值Scenario
开始,你误解了a的概念Scenario
。只需将您的步骤合而为一Scenario
,因为想一想:那就是“flow“你正在尝试测试。
Each Scenario
应该能够运行独立的。未来的执行顺序Scenario
-s 甚至可以是随机的或并行运行。
另一种解释方法是 - 如果你注释掉一个Scenario
其他的应该继续工作。
请不要想Scenario
作为“记录”测试的重要部分的一种方式。您始终可以使用注释(例如# foo bar
)。一些团队假设每个 HTTP“端点”应该位于单独的Scenario
- 但绝对不推荐这样做。看着那(这你好世界示例本身,它故意显示 2 个调用,一个POST
and a GET
!
您可以轻松地重复使用代码call因此您不必担心代码重复是否会成为问题。
另外,如果可以让流程更容易阅读,有一些代码重复也是可以的。看这个答案的详细信息- 并且还阅读这篇文章来自谷歌.
编辑:如果您想阅读回答类似问题的另一个答案:https://stackoverflow.com/a/59433600/143475
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)