簡體   English   中英

空手道 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:<\/code>部分。 這是一個例子<\/a>。

編輯:變量 if in the Background:<\/code>將為標准測試框架“設置”行為的每個場景重新初始化。 您可以使用諸如callonce<\/code>鈎子<\/a>- 如果您希望初始化只發生一次。

如果您試圖在一個場景中修改一個變量,並期望它現在在下一個Scenario<\/code>開始時具有該修改后的值,那么您誤解了Scenario<\/code>的概念。 只需將您的步驟合並到一個Scenario<\/code> ,因為想一想:這就是您要測試的“流程<\/em>”。

每個Scenario<\/code>都應該能夠獨立<\/strong>運行。 將來Scenario<\/code> -s 的執行順序甚至可以是隨機的或並行運行。

另一種解釋方式是 - 如果您注釋掉一個Scenario<\/code>其他Scenario<\/code>應該繼續工作。

請不要將Scenario<\/code>視為“記錄”測試的重要部分的一種方式。 您可以隨時使用注釋(例如# foo bar<\/code> )。 一些團隊假設每個 HTTP“端點”都應該存在於一個單獨的Scenario<\/code> ——但絕對不推薦這樣做。 看看Hello World 示例<\/a>本身,它故意顯示了 2 個調用,一個POST<\/code>和一個GET<\/code> !

您可以使用call<\/code><\/a>輕松重用代碼,因此您不必擔心代碼重復是否會成為問題。

另外 - 如果可以使流程更易於閱讀,則可以有一些代碼重復。 有關詳細信息,<\/a>請參閱此答案<\/a>- 並閱讀Google 的這篇文章<\/a>。

編輯:如果您想閱讀另一個回答類似問題的答案: https<\/a> : \/\/stackoverflow.com\/a\/59433600\/143475<\/a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM