В TestNG Есть клевая приблуда для предоставления данных тестам под названием DataProvider. Но удобнее ведь хранить данные во внешних файлах. Например, в случае .csv файла новый тест кейс таким образом создается тупо добавлением новой строчки в .csv таблицу. Написанный ниже DataProvider запускает тест каждый раз, как находит новую строчку в .csv файле, пропуская первую строчку, т.к. мы принимаем её за заголовок.
@DataProvider(name = \"Data\") public Iterator<Object []> dataReader() throws InterruptedException { List<Object []> dataLines = new ArrayList<>(); boolean notDataHeader = false; String[] data; BufferedReader br; String line; String workingDirectory = System.getProperty(\"user.dir\"); String filePath = workingDirectory + \"\\\\TestNG\\\\data\\\\\" + dataFile; try { br = new BufferedReader(new FileReader(filePath)); while ((line = br.readLine()) != null) { data = line.split(\";\"); if (notDataHeader) dataLines.add(data); notDataHeader = true; } } catch (Exception e) { e.printStackTrace(); } return dataLines.iterator(); }
Как подсунуть DataProvider к тесту и так ясно:
@Test(description=\"Описание теста\", dataProvider = \"Data\") public void pay(String uin, String price) throws Exception { dotest(); }
Это .csv файл с двумя значениями, подходящий к данному примеру. Если нужно добавить значений, не забываем добавить столько же входных параметров для функции public void pay:
uin;price 12;990