TestNG DataProviders
TestNG DataProviders
What is DataProvider:
DataProvider is a container which passes a data to our test method, so that same
test can be run with different data
@DataProvider(name="loginTestData")
public Object[][] loginData(){
Object[][] data = Object[2][2]
data = { {"Admin","admin123"},
{"Admin", "test123"},
}
return data
}
### use data provider method name in @Test Annotation, create appropriate no. of
variables in method signature
@Test(dataProvider="loginTestData")
public void login(String name, String password){
Reporter.log("login name = " + name + " login password " + password +"\n")
}
when we are returning single type of data (e.g. String, Employee) ...then instead
of Object we can use that datatype as return
But, For mixed datatype of data better to use Object ( as Object is superclass)
@Test(dataProvider="dp2")
public void arrayconsumer(Object a){
Reporter.log(a);
}
@DataProvider()
public Object[][] dp1(){
Object[][] data= {
new Object[] {"Yadgir", "Reddy"},
new Object[] {"Ramesh", "Edureka"},
};
return data;
}
@Test(dataProvider="dp1")
public void arrayofarray(String a, String b){ <=== as we know Object
array contains two Strings so we used String parameter ( we can use Object here as
well)
Reporter.log(a + " " + b);
}
- Iterator<Object>
when you use collections to store a data then we have to return it using
iterator
@DataProvider()
public Iterator<Object> dp3(){
List<Object> data = new ArrayList<Object>();
data.add("Kausar");
data.add(40);
data.add("Satara");
data.add("Ibrahim");
data.add(41);
data.add("Kolhapur");
return data.iterator;
}
@Test(dataProvider=dp3)
public Object consumer(Object a){
system.out.println(a)
}
- Iterator<Object[]>
when you use collections to store a array of data then we have to return it
using iterator
@DataProvider()
public Iterator<Object[]> dp7(){
List<Object[]> data = new ArrayList<Object[]>();
data.add(new Object[]{"Ibrahimpasha",41});
data.add(new Object[] {"Kausar", 40});
return data.iterator();
}
@Test(dataProvider="dp7")
public void iteratorarrayConsumer(Object[] a) {
for (int x=0;x<a.length;x++) {
System.out.println(a[x]);
}
3) How do we specify the parameters in the method signature or the test method
based on data