Как передать bean-класс в метод тестирования в testng? - PullRequest
0 голосов
/ 18 марта 2019

У меня есть Excel Util, который считывает все данные из таблицы Excel. Лист Excel содержит 10 столбцов, таких как время, sourceType, tid, message, severity, lastModify, entityName, operationType, replayId, recordIds.

Мой DataProvider имеет примерно такой код, который возвращает все 10 столбцов и их значения.

@DataProvider(name="googleData")
public static Object[][] testData() {
    String filePath = "/Users/TestUser/Workspace/FixProject/ExcelCheck/src/test/resources/excelreader.xlsx";
    Object[][] arrayObject = excelFileUtils.getExcelData(filePath, "excelreader");
    return arrayObject;
}

В моем TestMethod я должен пройти все эти 10 столбцов, иначе он не позволит мне работать. Вместо этого я хочу создать класс Bean и передать что-то вроде этого моему тестовому методу

@Test(dataProvider = "googleData", dataProviderClass = DataProviders.class)
public void testGoogleData(BeanClass object) {
System.out.println(object.getTid());

}

Как нам этого добиться?

Ответы [ 3 ]

0 голосов
/ 18 марта 2019
public static Object[][] read_excel(String Sheet_Name) throws Exception
    {
        File obj = new File("./src/main/java/com/Demo/TestData/Test_Data.xlsx");
        FileInputStream fis = new FileInputStream(obj);
        XSSFWorkbook wb = new XSSFWorkbook(fis);
        XSSFSheet sheet = wb.getSheet(Sheet_Name);
        int row_number  = sheet.getLastRowNum();
        int column_number = sheet.getRow(0).getLastCellNum();
        Object data[][] = new Object[row_number][column_number];
        wb.close();
        for(int i=0; i<row_number; i++)
        {
            for(int j=0; j<column_number; j++)
            {
                data[i][j] = sheet.getRow(i + 1).getCell(j).toString();
            }
        }
        return data;
    }   

@DataProvider
public Object[][] getDataFromExcel() throws Exception
{  Object[][] data = Utility.read_excel("Admin_Credentials");//Sheet name
    return data;
} 
@Test(dataProvider="getDataFromExcel")
0 голосов
/ 18 марта 2019

Поддерживается в Расширение QAF-TestNG .У вас может быть один или несколько аргументов сложного объекта в вашем методе теста при использовании встроенного или пользовательского поставщика данных.Для Excel ваш код может выглядеть следующим образом:

@QAFDataProvider(dataFile = "resources/data/googletestdata.xls")
@Test
public void testGoogleData(BeanClass object) {
   System.out.println(object.getTid());
}

Для пользовательского поставщика данных он может выглядеть следующим образом:

@QAFDataProvider
@Test(dataProvider = "googleData", dataProviderClass = DataProviders.class)
public void testGoogleData(BeanClass object) {
   System.out.println(object.getTid());
}

Вы должны убедиться, что имя свойства в вашем классе бинадолжны совпадать с именами столбцов (в любом порядке).При использовании пользовательского поставщика данных вам нужно вернуть Iterator для List из Map<String, Object> или для объекта [] [], имеющего Map, см. несколько примеров , если вам необходимо создать пользовательский поставщик данных.

0 голосов
/ 18 марта 2019

Используя имеющийся у вас dataProvider, ваш метод тестирования будет запускаться 10 раз для каждого объекта в массиве.

Что вы можете сделать, это создать объект, преобразовать ваш dataProvider в этот объект и затем использоватьэто код вашего теста.

Object myDataHelper = null;

@Test()
public void testGoogleData(BeanClass object) {
myDataHelper = convertDataProviderToObject();
// use it here in a for/for each loop
System.out.println(object.getTid());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...