2015-06-11 131 views
1

我剛開始使用Spec流程以及Selenium & N單位。我有一個基本問題,也許我知道它的答案,但希望得到證實。考慮一下,有2個功能 - 註冊,添加新的事務。 2個獨立的功能及其各自的步驟定義。如何跨兩個功能共享IWebDriver元素。我不想再次啓動新的瀏覽器&添加事務。想要執行這兩個流程。 我的想法是,這個功能是不允許使用Spec流作爲基本功能的基於測試的使用被違反,因爲試圖在同一會話中運行2個功能。在這種情況下,上下文注入是否會提供幫助?Specflow,Selenium-在不同的步驟定義或類別之間共享數據

+0

我沒有參考這個鏈接,但更多的信息總是讚賞。 http://stackoverflow.com/questions/2881685/in-specflow-how-can-i-share-data-between-steps-features – ReuseAutomator

+0

如果它只是爲Webdriver,你可以嘗試一個單例類來訪問所有單實例不管特徵如何。 – Kavan

回答

3

你想做什麼是一個壞主意。你應該爲每個功能開始一個新的瀏覽器會話,恕我直言。

無法保證測試執行的順序,這將由測試運行人員決定,因此您可能會在Feature1之前運行Feature2。

實際上,您的場景也應該是獨立的。

可以共享步驟之間的webdriver的實例作爲this answer但你應該使用specflows其他功能,如場景Background做設置,或做你的comman設置definign步驟。

編輯

我們有一個類似的問題與我們的一些測試,這是我們做什麼:

我們創建的第一步

Feature: thing 1 is done 

Scenario: Do step 1 
    Given we set things for step 1 up 
    When we execute step 1 
    Then some result of step one should be verified 

一個sceanrio然後我們做一個用於步驟2(其假設依賴於步驟1)

Feature: thing 2 is processed 

Scenario: Do step 2 
    Given we have done step 1 
    And we set things for step 2 up 
    When we execute step 2 
    Then some result of step 2 should be verified 

這第一步Given we have done step 1

是調用功能1的所有步驟的一步:

[Given("we have done step 1")] 
public void GivenWeHaveDoneStep1() 
{ 
    Given("we set things for step 1 up"); 
    When("we execute step 1"); 
    Then("some result of step one should be verified"); 
} 

那麼,如果我們有第3步我們這樣做:

Feature: thing 3 happens 

Scenario: Do step 3 
    Given we have done step 2 
    And we set things for step 3 up 
    When we execute step 3 
    Then some result of step 3 should be verified 

再次Given we have done step 2是一個複合步驟,調用步驟2中的所有步驟(因此調用步驟1的所有步驟)

[Given("we have done step 2")] 
public void GivenWeHaveDoneStep2() 
{ 
    Given("we have done step 1"); 
    Given("we set things for step 2 up"); 
    When("we execute step 2"); 
    Then("some result of step 2 should be verified"); 
} 

我們重複這個過程,以便當我們到達第5步時,它按照正確的順序運行所有步驟。有時候我們可以步驟5我們@ignore前4個步驟,因爲無論如何它們都將被第5步調用。

+0

@山姆 - 我看到你的意思是你的選擇以任何順序運行。有沒有辦法讓這個工作順序。我計劃按特定順序運行煙霧流量 - 一組5個功能。將具體的文件夾中的所有煙霧測試和編號運行它們解決它。我知道恕我直言,這不是一個好主意。 – ReuseAutomator

+0

我想在3,4完成後才運行第5個功能。但在這之前觀察5次跑步。 – ReuseAutomator

+0

嘗試使用您的代碼在OrderedTest for MsTest中的功能之間共享WebDriver會話不起作用。任何想法?它在NUnit中起作用。 – ReuseAutomator