![](/img/trans.png)
[英]Karate Rest API Testing : getting com.intuit.karate - no runnable scenarios found: class.feature, env: null
[英]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.