Как использовать данные Excel в объекте List <map>с DataProvider? - PullRequest
0 голосов
/ 26 апреля 2019

Я использую драйвер Excel для получения идентификаторов пользователей и паролей из моей таблицы.Я создаю объект драйвера Excel и использую метод класса драйвера Excel, чтобы получить данные и сохранить их как Map<String,Object>> testData.

. Это реализовано в моем методе DataProvider.У меня возникают проблемы при передаче значений в мой основной метод тестирования.

Я могу получить значения для 1 строки за раз и перейти к основному методу тестирования, но я хотел бы иметь возможность пройти все 3строки учетных данных пользователя.

// This returns a List with a map that represents every row in spreadsheet

List<Map<String, Object>> testData = excelDriver.getData();


// The following code works to get data for the first row, but I need to understand how to 
// return all UserIDs and Passwords (3 rows total) for use in the main Test.

@DataProvider(name="dataProvider")
public Object [] dataProvider() throws IOException {
    Map<String, Object> nmap = testData.get(1);
    Object userID = nmap.get("USER_ID");  // user ID column header
    Object password = nmap.get("Password"); // password column header
    return new Object [] {{userID, password}};
}

1 Ответ

0 голосов
/ 27 апреля 2019

В вашем коде каждая строка представлена ​​в виде массива объектов, поэтому вы должны вернуть List <Object[]>, чтобы получить все строки.

@DataProvider(name="dataProvider")
public List<Object[]> dataProvider() {
  List<Map<String, Object>> testData = excelDriver.getData();
  return testData.stream().map( row -> dataMapper(row)).collect(Collectors.toList());
}

private Object [] dataMapper(Map<String, Object> nmap) {
    Object userID = nmap.get("USER_ID");  // user ID column header
    Object password = nmap.get("Password"); // password column header
    return new Object [] {userID, password};
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...