簡體   English   中英

使用Behat的最佳做法

[英]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.

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