空手道API测试 - 在同一个功能文件中重用不同场景中的变量

时间:2017-09-06 15:29:06

标签: karate

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 个答案:

答案 0 :(得分:2)

使用Background:部分。这是一个example

编辑:Background:中的变量if将针对标准测试框架“设置”行为的每个场景重新初始化。如果您希望初始化只发生一次,则可以使用callonce

如果您尝试在一个场景中修改变量并期望它在下一个Scenario开始时具有该修改后的值,那么您误解了Scenario的概念。只需将您的步骤合并为一个Scenario,因为请考虑一下:这是您尝试测试的“ flow ”。

每个Scenario都应该可以运行独立。将来,Scenario - s的执行顺序甚至可以是随机的或并行运行。

解释这一点的另一种方法是 - 如果你注释掉一个Scenario,其他的应该继续工作。

请不要将Scenario视为“记录”测试重要部分的方法。您始终可以使用评论(例如# foo bar)。

您可以使用call轻松重复使用代码,因此您不必担心代码重复是否会成为问题。