背景中的步驟不能與示例結合使用。 Behat是一個限制嗎?爲什麼背景中的步驟不能與Behat中的示例結合
我有以下功能文件。
Background:
Given I have the login Page
When I login to the application using "<username>"
Then the list is displayed
When I select an item from the list
Then I am taken to the Dashboard
When I navigate to the Overview Page
Then the Overview Page is displayed
@javascript @frontend @devlocal
Scenario Outline: To verify the Overview page content
Then overview page main headings are displayed
Examples:
| username | role |
| RoleUser | ROLE_USER |
| RoleAdmn | ROLE_ADMIN |
這將產生錯誤: [貝哈特\小黃瓜\異常\ ParserException]
預期註釋或方案或輪廓或步驟令牌,但得到了對線實施例:15中的文件:在/ var /功能/概述.feature
我在「背景」中有這麼多步驟的原因是因爲這是進入頁面的邏輯流程。我有幾個使用這些步驟的場景。
我確實有這個問題的工作解決方案,它使用「場景」中的「背景」中的所有步驟。這工作絕對好。不過,對於此功能,我有5種不同的場景,並且如果我在所有5種場景中複製並粘貼相同的步驟,它看起來絕對凌亂和麻煩。 我認爲這是我們使用背景部分的主要原因?
這裏是我使用的那一刻是什麼:
背景: 鑑於我在登錄頁面
@javascript @frontend @devlocal
Scenario: To verify the Overview page content
When I login to the application using "<username>"
Then the list is displayed
When I select an item from the list
Then I am taken to the Dashboard
When I navigate to the Overview Page
Then the Overview Page is displayed
Then overview page main headings are displayed
Examples:
| username | role |
| RoleUser | ROLE_USER |
| RoleAdmn | ROLE_ADMIN |
想象一下,從所有不同的場景場景部分的所有這些步驟
謝謝伊恩。將6個步驟合併爲2個步驟意味着什麼?這是否意味着將所有這6個步驟的邏輯合併到2中。這將會有點冗餘,不是這樣(在不同情況下再次編寫相同的代碼) – 2014-09-11 12:31:26
您的背景包含每個大綱「繼承」的公共邏輯。您可以將該通用邏輯從背景中分離到另一個場景中,因此不必檢查每個場景大綱中的後臺步驟是否通過,而是可以在單獨的場景大綱中執行相同的操作,從而減少所有其他五個場景大綱的負載。在那裏你只需要登錄並進入特定場景測試開始的頁面。 – 2014-09-11 12:49:43
在代碼中使用相同的字母在某些方面也可以被認爲是冗餘的。你有侷限性,你想找到儘可能少的重複自己的方法,你可以重新安排你的代碼,讓它變得更幹,這樣可以使事情變得更好。 – 2014-09-11 12:52:36