[英]Best practices using Behat
我想測試添加事件的路線。 但是問題是:這個方法在POST中發送了很多關於50的參數。
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have param "sEventType" with value "<sEventType>"
And I have param "aFilters[]" with value "<aFilters[]>"
And I have param "nCompany" with value "<nCompany>"
..................................................
And I call url "<path>"
And I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
Examples :
|path ........
|..............
對於許多爭論,本示例將使該功能難以理解。 用許多參數測試此路線的最佳實踐是什么。 請幫助我,在此先感謝!
具有大量步驟的功能測試是反模式。 在每個步驟中,以代碼編寫,然后執行更多操作,然后根據需要重新使用這些步驟。 我有一些功能上下文,它們可以引入一些特質,這些特質可以一起工作以完成我需要的工作。
有時,代碼可以是網絡步驟的列表(我有一個注冊函數,它是visit('url')fillFields(),pressButton()),而其他時候它們是讀取或寫入數據庫的。
Scenario Outline: Check Api Simple Test
Given I prepare an API with appropriate parameters
When I call url "<path>"
Then I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
Behat是用於驗收測試的,您正在嘗試的稱為集成測試。
如果要發布這些帖子變量,只需訪問(URL),可以選擇填寫表格,然后提交。 這正是用戶必須填寫表格的方式。 如果對您來說太多了,也許對您的用戶來說太多了。
When I fill in "form_element_name" with "value"
And I press "submit"
Then I should see "resultz"
但是,如果這確實是您需要的,請創建一個步驟定義“發布大量變量”,並在上下文文件中實現細節。
當它只是一個API端點時,我將使用集成測試來對控制器進行測試。
或者,您可以使用TableNodes(我知道我來晚了一點),但實際上,如果您使用以下代碼段:
/**
* @Then /^I have the following param(?:|eter)s with values:$/
*/
public
function iHaveTheFollowingParamsWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $param => $value) {
$this->iHaveParamWithValue($param, $value);
}
}
和:
/**
* @Then /^I should have the following codes with values:$/
*/
public
function iShouldHaveTheFollowingCodesWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $code => $value) {
$this->iShouldHaveCodeWithValue($code, $value);
}
}
它將調用陳述的函數,並允許您將數據寫入到表中,就像方案大綱的示例表一樣。
如:
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have the following params with values:
|sEventType|<sEventType>|
|aFilters[]|<aFilters[]>|
|nCompany |<nCompany> |
..................................................
And I call url "<path>"
And I should have the following codes with values:
|code |<code> |
|error|<error>|
Examples :
|path ........
|..............
這將有助於提高可讀性,並少量地加快測試編寫和測試執行的速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.