Reputation: 11
Here is my code, i want to pass first set data {"shankar","admin123"} to only test1() and second set data {"Siva","admin@123"} to test2(), please help me on that i have tried @ factory also...please help me guys.
package com.vmetry.dataprovider;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderTest {
@Test(dataProvider="dp")
public void test1(String uname, String pass){
System.out.println("the test1 param are: "+uname+"-"+pass);
}
@Test(dataProvider="dp")
public void test2(String uname, String pass){
System.out.println("the test1 param are: "+uname+"-"+pass);
}
//passing data provider data
@DataProvider(name="dp")
public Object[][] data(){
Object[][] obj={{"Vasanth","admin123"},{"Shanmugam","admin@123"}};
return obj;
}
}
****************************ACTUALLY THIS IS MY CASE************************ Please CLICK THE IMAGE TO KNOW MY SCENARIO REQUIREMENT
Upvotes: 0
Views: 1668
Reputation: 31214
In your example you do not need to use DataProvider
at all:
public class DataProviderTest {
@Test
public void test1(){
String uname="Shanmugam";
String pass="admin123";
System.out.println("the test1 param are: "+uname+"-"+pass);
}
@Test
public void test2(){
String uname="Shanmugam";
String pass="admin@123";
System.out.println("the test1 param are: "+uname+"-"+pass);
}
}
If for some odd reason you must use a DataProvider
then you can create additional ones that filter your original one:
public class DataProviderTest {
@Test(dataProvider="dp1")
public void test1(String uname, String pass){
System.out.println("the test1 param are: "+uname+"-"+pass);
}
@Test(dataProvider="dp2")
public void test2(String uname, String pass){
System.out.println("the test1 param are: "+uname+"-"+pass);
}
@DataProvider(name="dp1", indices={0})
public Object[][] data(){
return data()
}
@DataProvider(name="dp2", indices={1})
public Object[][] data(){
return data()
}
@DataProvider(name="dp")
public Object[][] data(){
return new Object[][]{{"Vasanth","admin123"},{"Shanmugam","admin@123"}};
}
}
Or if you want one test class per data provider record with your test(s):
public class DataProviderTest {
private final String uname;
private final String pass;
@Factory(dataProvider="dp")
public DataProviderTest(String uname, String pass) {
this.uname=uname;
this.pass=pass;
}
@DataProvider(name="dp")
public static Object[][] data() {
return new Object[][]{{"Vasanth","admin123"},{"Shanmugam","admin@123"}};
}
@Test
public void test() {
System.out.println("the test1 param are: "+uname+"-"+pass);
}
}
Upvotes: 1