簡體   English   中英

如何使用相同的數據提供程序並行運行硒測試

[英]How to run selenium test in parallel using the same dataprovider

我有一種情況,我需要使用相同的數據提供程序並行運行我的硒測試。 根據我的閱讀,有可能但無法使其正常工作。我有一個集線器和一個節點在一台計算機上運行,​​而另一個節點在另一台計算機上運行。

我的數據提供者

// Data provider for Storage Rule Suite
@DataProvider(name = "StorageRuleDataProvider", parallel =true)
public static Object[][] getStorageData(Method m) {
    return TestUtil.getData(m.getName(), TestBase.storageSuite);
}

我的測試

@Test(groups = { "CreateNewStorageRule" }, dependsOnGroups = { "StoragePage" }, dataProviderClass = TestDataProvider.class, dataProvider = "StorageRuleDataProvider", threadPoolSize = 20)
public void createNewStorageRuleTest(Hashtable<String, String> data){}

XML格式

<suite name="Storage Rule Suite" parallel="tests" data-provider-thread-count="20"  >

當我在xml文件中運行測試時,我在每個節點上都打開了兩組瀏覽器,但是當它嘗試進行登錄時,有時會在一個瀏覽器中兩次輸入憑據,而在另一個瀏覽器中則什么都不輸入,有時在一個瀏覽器中沒有輸入任何內容瀏覽器。

首先,您必須使用parallel="methods"運行@Test方法。 第二:我有一個類似的問題,更多的Test方法在同一瀏覽器中執行,我通過制作WebDriver ThreadSafe解決了它。

您所描述的是非線程安全的Selenium測試自動化框架的經典示例。 在大多數情況下,您可以通過每個測試類具有一個驅動程序實例,然后在單個線程中運行該類的所有測試來解決此問題。

但是,如果要在多個並行線程中運行單個測試類的內容,則需要在框架中重新設計is-a和has-a關系。 這是如何完成此操作的詳細示例:

http://automatictester.co.uk/2015/04/11/parallel-execution-on-method-level-in-selenium-testng-framework

雖然,這可能會給您的測試自動化增加額外的工作量和額外的兼容性。 我會三思而后行,為什么要並行使用數據提供程序運行Selenium測試方法,並嘗試回答是否確實需要這樣做的問題。

根據我的經驗,如果您開始將數據提供程序與Selenium結合使用,則可能會對整體測試方法產生疑問。 也許您嘗試在UI級別上實現太多自動化,而不是將測試向下推到例如API級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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