2014-10-03 85 views
0

我想了解如何实现一个工厂来测试我定义的所有浏览器上的测试类。有一个更好的方法吗。任何人都可以提出基本的改进?关于定义一个测试在各种浏览器上运行单个浏览器测试的工厂

public class FactoryDataProviderTestBase extends MyTestBase 
{ 
    @Factory(dataProvider = "dp") 
    public FactoryDataProviderTestBase(SauceTestHelper helper, 
     Map<String,String> csvArgMap) { 
    super(helper, csvArgMap); 
    } 

    @DataProvider(name = "factory") 
    static public Object[][] factoryDataProvider() { 

    // do stuff here to initialize csvArgMap from csv file 

    return new Object[][] { 
     new Object[] { new SauceTestHelper(browser.FirefoxLatest), argMap }, 
     new Object[] { new SauceTestHelper(browser.IE8), argMap }, 
     new Object[] { new SauceTestHelper(browser.IE9), argMap }, 
     new Object[] { new SauceTestHelper(browser.IE10), argMap }, 
     new Object[] { new SauceTestHelper(browser.IE11), argMap }, 
     new Object[] { new SauceTestHelper(browser.Safari7), argMap }, 
     new Object[] { new SauceTestHelper(browser.Chrome), argMap } 
    }; 

    } 
} 

在上面的代码,TestNG的应创建类FactoryDataProviderTestBase,一个的多个实例为每个定义的浏览器?

+0

我不熟悉TestNG,但JUnit有一个参数化的runner选项,它允许您在运行测试之前设置参数。 TestNG可能有类似的东西。看看这个答案是否有助于你的案例http://stackoverflow.com/questions/26604745/parameterized-selenium-tests-in-parallel-with-testng。 – shri046 2014-11-03 16:10:32

回答

-1

您应该为此使用Selenium's Grid。可以找到设置和配置信息here

+0

我确实使用Selenium Grid作为Sauce Labs网格的形式。另外,我的问题不是关于Selenium Grid配置。 – djangofan 2014-10-03 20:05:15