2013-09-27 20 views
4

我已經完成了很多R & D,但我無法找到解決方案。在behat和水貂中的單個功能文件中維護場景之間的會話

我需要在單個功能文件中的不同場景之間維護一個登錄會話。 我做了一個函數I am logged in,我寫在後臺。所以在每個場景開始時登錄都會發生。但我想要的是在場景中保持單一登錄會話。 任何人都可以提出建議。?

示例代碼:

Feature: To test the output 

Background: 
    Given I am logged in 

@javascript 
Scenario: To test the positive input 
    When I fill in "test" with "aab" 
    And I press "add" 
    Then I should see "welcome" 

@javascript 
    Scenario:To test the negative inputs 
    When I fill in "test" with "@#[email protected]!!111" 
    And I press "add" 
    Then I should see "Sorry,invalid input please try again" 

現在,如果其他人的評論我的代碼,他會知道的正面和負面測試用例。但每次場景重新加載時,如果我在某個功能中有50個場景,該怎麼辦?對於更大的項目。它看起來並不擅長我登錄的每個場景,我總共浪費了15分鐘。我想要的是在單個功能文件中的每個場景之後,測試會繼續使用相同的登錄會話。

+0

你是否只想在每個場景中懶洋洋地'登錄',如果還沒有,或者你的場景之間有依賴關係嗎? –

+0

您是否可以發佈說明或重現問題所需的最少量代碼?另外,你是否使用'After'掛鉤在場景之間關閉瀏覽器? – orde

+0

@PaulMorie:我只想保存我的測試時間,並且特性文件中的所有場景與可能具有負輸入正輸入等的特定函數相關,因此對於每次不同的情況,我每次都記錄,這會減慢更流暢。 –

回答

3

它不能完成。 Behat場景目的是獨立的。否則,您將冒險狀態從一個場景泄露

你沒有從正確的方向接近問題。爲了提高速度而犧牲場景分離會長期傷害你。

假設登錄是作爲功能之一進行測試的,在其他需要登錄的情況下,您不必使用實際的登錄表單。想想做它programaticaly。

此外,您似乎正在使用Behat進行功能測試,而它的構建是爲了驗證業務預期。你可以考慮直接使用Mink,這會給你更多的權力。