如何在testng中组合数据提供者

时间:2014-10-29 13:46:54

标签: java selenium testng

有人可以告诉我如何将两个数据提供商合并在一起并将其作为一个数据提供商。

@DataProvider
public Object[][] Authentication() throws Exception{
        Object[][] testObjArray = ExcelUtils.getTableArray(System.getProperty("user.dir")+"/inputs/JoinnowTest.xlsx","Sheet1",4);
        return (testObjArray);
}

@DataProvider
public Object Browsername() throws Exception{
       Object browser = "Iexplore";
       return browser;
}

我想结合这两个数据提供者。

2 个答案:

答案 0 :(得分:0)

您可以简单地创建一个新类并将两个(Object [] []和Object)数据结构放在一起,如下所示:

public class DataProviderContainer {

  private Object[][] auth;
  private Object browser;

  public DataProviderContainer(Object[][] auth, Object browser){
    this.auth= auth;
    this.browser = browser;
  }
  public DataProviderContainer(Object[][] auth){
    this.auth= auth;
  }
  public DataProviderContainer(Object browser){
    this.browser = browser;
  }

  public Object[][] getAuth(){
    return this.auth;
  }

  public Object getBrowser(){
    return this.browser;
  }

  public void setAuth(Object[][] auth){
    this.auth= auth;
  }

  public void setBrowser(Object browser){
    this.browser = browser;
  }


}

你也可以包括你的例外。

答案 1 :(得分:0)

//使用ITestContext对象,您可以将muliple Dataproviders合并为一个例如

@Test     public void test1(){         的System.out.println( “测试1”);

}

@Test
public void test2() {
    System.out.println("Test2");

}

//这里t.getName()将返回要执行的当前测试用例名称

@DataProvider
public Object[][] dataProvider(ITestContext t) throws Exception{
        Object[][] testObjArray = null;
        if(t.getName().equals("test1"))
        {
            return <AUTHATICATE ARRAY>
        }
        else
        {
            return <BROWSER ARRAY>
        }
}