我剛開始使用Spec流程以及Selenium & N單位。我有一個基本問題,也許我知道它的答案,但希望得到證實。考慮一下,有2個功能 - 註冊,添加新的事務。 2個獨立的功能及其各自的步驟定義。如何跨兩個功能共享IWebDriver元素。我不想再次啓動新的瀏覽器&添加事務。想要執行這兩個流程。 我的想法是,這個功能是不允許使用Spec流作爲基本功能的基於測試的使用被違反,因爲試圖在同一會話中運行2個功能。在這種情況下,上下文注入是否會提供幫助?Specflow,Selenium-在不同的步驟定義或類別之間共享數據
回答
你想做什麼是一個壞主意。你應該爲每個功能開始一個新的瀏覽器會話,恕我直言。
無法保證測試執行的順序,這將由測試運行人員決定,因此您可能會在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步調用。
@山姆 - 我看到你的意思是你的選擇以任何順序運行。有沒有辦法讓這個工作順序。我計劃按特定順序運行煙霧流量 - 一組5個功能。將具體的文件夾中的所有煙霧測試和編號運行它們解決它。我知道恕我直言,這不是一個好主意。 – ReuseAutomator
我想在3,4完成後才運行第5個功能。但在這之前觀察5次跑步。 – ReuseAutomator
嘗試使用您的代碼在OrderedTest for MsTest中的功能之間共享WebDriver會話不起作用。任何想法?它在NUnit中起作用。 – ReuseAutomator
- 1. 在SpecFlow中,如何在步驟/功能之間共享數據?
- 2. 我需要在不同類的步驟之間共享數據
- 3. Selenium和SpecFlow之間的共享方法
- 4. 在specflow場景之間共享數據
- 5. Specflow步驟定義類在不同的項目中
- 6. 在不同的測試類別之間共享數據
- 7. 水壺或PDI:在不同步驟之間共享相同的DB連接
- 8. SpecFlow + Selenium-WebDriver:跨步共享WebDriver?
- 9. 在步驟之間共享數據序列化錯誤
- 10. SpecFlow的功能範圍步驟定義?
- 11. specflow的動態步驟定義匹配
- 12. 不同片段之間共享數據
- 13. 如何在Java中的不同類之間共享數據
- 14. Python:如何在不同類的實例之間共享數據?
- 15. 黃瓜不識別定義的步驟「未定義的步驟」
- 16. 在爲不同API級別定義的相同主題之間共享屬性
- 17. 默認值Specflow步驟定義
- 18. 在類之間共享數據
- 19. 如何在類之間共享數據?
- 20. 在兩個類之間共享數據
- 21. 在類對象之間共享數據
- 22. 在分類之間共享數據集
- 23. 導航到Specflow步驟從步驟定義
- 24. 類之間共享的NSDictionary數據
- 25. 如何識別Specflow的後臺步驟?
- 26. java - 在線程之間共享數據 - 原子參考或同步
- 27. 如何在屬於不同類的不同線程之間共享數據?
- 28. 在活動和類別之間共享數據
- 29. Specflow:對於步驟
- 30. Bitbucket管道共享分支之間的一些步驟
我沒有參考這個鏈接,但更多的信息總是讚賞。 http://stackoverflow.com/questions/2881685/in-specflow-how-can-i-share-data-between-steps-features – ReuseAutomator
如果它只是爲Webdriver,你可以嘗試一個單例類來訪問所有單實例不管特徵如何。 – Kavan