'How can I get my data from csv file to DataProvider

I need to take data(username and password) from my csv.file and use it to register some new Users using DataProvider in Selenium. I have made already Reader to read this file but i can not put this data in DataProvider correctly. Help me please.

I created a method for reading csv file and test with provider for working.

my method public static List users = new ArrayList<>();

public static Object openCSVReader() throws IOException {

    CSVReader reader = new CSVReader(new FileReader(System.getProperty("user.dir") + "\\src\\test\\resources\\users.csv"), ',');

    // read line by line
    String[] record = null;

    while ((record = reader.readNext()) != null) {
        User user = new User("username", "password");
        user.setUsername(record[0]);
        user.setPassword(record[1]);
        users.add(user);
    }


    reader.close();
    return users;

}

my test

@Test(dataProvider = "registration")
    public void registerCSVFiles(String username, String password) throws IOException {
        registerPage.writeInForm(user);
        registerPage.writeFile(user);
        registerPage.selectUserAndRegister();
    }
}
    @DataProvider(name = "registration")
    public static Object[][] credentials() throws IOException {
        return new Object[][]{
                {users.get(0)},{users.get(1)}
        };
    }

I can not take data from my openCSVReader. Help pls



Solution 1:[1]

May be following approach can be useful to fulfill your requirement.

sample content of csv file is as below. (users.csv)

user1,password1

user2,password2

Test class is composed as below;

@DataProvider(name = "userDetails")
public static Object[][] readCsv() throws IOException {
    CSVReader csvReader = new CSVReader(new FileReader(System.getProperty("user.dir")+"/src/test/resources/users.csv"),',');
    List<String[]> csvData=csvReader.readAll();
    Object[][] csvDataObject=new Object[csvData.size()][2];
    for (int i=0;i<csvData.size();i++) {
        csvDataObject[i]=csvData.get(i);
    }
    return  csvDataObject;
}

@Test(dataProvider = "userDetails")
public void userLoginTest(String userName,String password){
    System.out.println(userName+" "+password);
}

Note: DataProvider method should reside in the same class where test method exist or it should resides its base class

Used libraries : OpenCSV

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community