@DataProvider - база данных MySQL - TestNG - PullRequest
0 голосов
/ 05 марта 2020

У меня есть сценарий селена для формы входа, который вводит « имя пользователя » и « пароль » в форме входа. При этом используется @DataProvider, который получает данные из базы данных MySQL. Как я могу изменить этот @DataProvider для размещения дополнительных полей, чтобы его можно было использовать для заполнения полей формы регистрации такими данными, как Имя , Фамилия , Имя пользователя Пароль из базы данных. Вот код, который у меня есть:

public class DBDataProvider {

private static String[][] inputArr;

public static void main(String[] args) {

}

public Object[][] getDatabaseData() {

    Connection con = null;

    try {
            con = DatabaseConnectionManager.getConnectionManagerInstance().connect();

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery("SELECT * FROM click_reg_db");

            rs.last();
            int rows = rs.getRow();

            ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
            int cols = rsmd.getColumnCount();
            System.out.println("Rows: " + rows + " -- Cols: " + cols);
            inputArr = new String[rows][cols];

            int i = 0;
            rs.beforeFirst();
            // Iterating the data in the Table

            while (rs.next()) {

                for (int j = 0; j < cols; j++) {
                    inputArr[i][j] = rs.getString(j + 1);
                    System.out.print("values:: " + inputArr[i][j] + ":::" + i + ":::" + j);

                }
                System.out.println();
                i++;

            }

    } catch (SQLException e) {

        e.printStackTrace();
        System.out.println("cannot connect to database...");
    }

    return inputArr;
}

@DataProvider(name = "databaseTestData", parallel=true)
public Object[][] databaseTestData()
{
    Object[][] data= getDatabaseData();

    for(int i=0;i<data.length;i++)
    {
        for(int j=0;j<data[i].length;j++)
        {

            System.out.println("in for :: " + data[i][j]);

         }
      }

       return data;
     }

  }

Теперь я хочу, чтобы тест выполнялся на данных из dataProvider:

@Test(dataProvider = "databaseTestData", dataProviderClass = DBDataProvider.class)
    public void loginTestDBData(String fname, String lname, String username, String password) {

        System.err.println("Running Test=> " + this + " -> on thread [" + Thread.currentThread().getId() + "]");

        log.info("Starting registration for " + username);


        ...


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...