У меня 20 или более таблиц.Количество столов может быть разным.Для определения количества таблиц я использую функциональность driver.findElements (By.xpath (...)). Size ().
Для одной таблицы я создал метод DataProvider, который возвращает объект:
@DataProvider
public Object[][] tableValues() throws Exception {
.........
int c = 0; // here I use HashMap<String, String> object
//filled with entry.getValue = column label, entry.getKey() = cell value of column
Object obj[][] = new Object[tableMap.size()][4];
print("========== DataProvider object generating...");
print("========== Size of tableMap: "+tableMap.size());
for (Map.Entry entry: tableMap.entrySet()) {
obj[c][0] = fileName;
obj[c][1] = entry.getValue();
obj[c][2] = entry.getKey();
obj[c][3] = false;
c++;
}
obj[tableMap.size()-1][3]=true;
return obj;
}
В этом случае у меня есть fileName = "имя файла 1" для первой таблицы.
Я использую этот объект, чтобы утверждать, что каждое значение таблицы может быть найдено в базе данных с помощью функции веб-поиска.Для поиска я использую только значение entry.getKey, но использую fileName и entry.getValue в отчетах по экстентам, чтобы показать, где находится значение.
Я жестко запрограммировал fileName здесь, проверяя значения только для таблицы с этим fileName.
Я хочу повторить и DataProvider, и метод Test "количество таблиц" раз, используя каждый раз следующий номер таблицы, начиная с 01. Я мог бы сказать это по-другому: например, у меня есть 20 таблиц,Я должен использовать 20 DataProviders с 20 различными fileNames, и я должен запустить @Test (dataProvider = "tableValues") 20 раз также с разными именами таблиц.Я не мог получить 20 наборов таблиц в одном большом DataProvider.Я мог бы это сделать, но я не должен этого делать, потому что значения таблиц могут измениться через 10-20 минут, и это может изменить результаты теста.Я получаю ограниченное количество строк и быстро проверяю их.Затем я иду в другую таблицу, выбирая значения, утверждая значения и т. Д.
@Test(dataProvider = "tableValues")
public void ValuesAsserting(String fileName, String columnName, String cellValue, boolean flag) throws Exception {
if (cellValue != null) { //Steps:
inputField(cellValue, "searchFieldXpath"); //1
buttonClick("searchButtonXpath"); //2
waitLoaderDisplayed(); //3
waitLoaderHidden(); //4
print("Verifying "+fileName+": "+columnName+": "+cellValue);
logger = extent.createTest("Verifying of "+fileName+" value: "+"\n"+columnName+": "+cellValue);
assertValueIsInResults(cellValue,"searchResultsXpath"); //5
// asserts file's generation time before and after testing
scanTimeAssert(flag); //After tests
}
}