提问人:Saurabh 提问时间:9/6/2017 更新时间:11/19/2020 访问量:17900
空手道 API 测试 - 在同一功能文件中重用不同场景中的变量
Karate API Testing - Reusing variables in different scenarios in the same feature file
问:
空手道是否支持可以在场景中定义变量并在同一功能文件中的其他场景中重用该功能的功能。我尝试做同样的事情,但出现错误。在同一功能文件中重用变量的最佳方法是什么?
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
答:
使用一个部分。下面是一个示例。Background:
编辑:变量如果在 中将针对每个场景重新初始化,这是标准测试框架的“设置”行为。您可以使用钩子,例如 callonce
- 如果您希望初始化只发生一次。Background:
如果您尝试在一种方案中修改变量,并希望它在下一个方案开始时具有该修改后的值,那么您误解了 .只需将您的步骤组合成一个,因为请仔细想想:这就是您要测试的“流程”。Scenario
Scenario
Scenario
每个都应该能够独立运行。在未来,-s 的执行顺序甚至可以是随机的或并行运行的。Scenario
Scenario
另一种解释方式是 - 如果你注释掉另一个应该继续工作。Scenario
请不要将其视为“记录”测试重要部分的一种方式。您可以随时使用注释(例如 )。一些团队认为每个 HTTP“端点”都应该单独存在 - 但绝对不建议这样做。看看 Hello World 示例本身,它故意显示 2 个调用,a 和 a !Scenario
# foo bar
Scenario
POST
GET
您可以使用调用
轻松重用代码,因此您不必担心代码重复是否会成为问题。
另外 - 如果使流程更易于阅读,那么进行一些代码重复是可以的。有关详细信息,请参阅此答案 - 并阅读 Google 的这篇文章。
编辑:如果您想阅读另一个回答类似问题的答案:https://stackoverflow.com/a/59433600/143475
评论