首页 文章

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

提问于
浏览
3

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 回答

  • 2

    使用 Background: 部分 . 这是example .

    编辑:如果 Background: 中的变量将针对标准测试框架"set up"行为的每个场景重新初始化 . 如果希望初始化仅发生一次,则可以使用callonce .

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

    每个 Scenario 应该能够运行 stand-alone . 将来, Scenario -s的执行顺序甚至可以是随机的或并行运行 .

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

    请不要将 Scenario 视为测试重要部分的一种方式 . 您始终可以使用评论(例如 # foo bar ) .

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

相关问题