vasanth s
vasanth s

Reputation: 11

How to pass testng Dataprovider first set parameters to first test and second set Paramater to second test ans so on

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

Answers (1)

mfulton26
mfulton26

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

Related Questions