如何将bean类传递给testng中的测试方法?

问题描述 投票:0回答:3

我有一个Excel Util,它从excel表中读取所有数据。 excel表有10列,如time,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;
}

在My TestMethod中,我必须传递所有这10列,否则它不允许我运行。相反,我想创建一个Bean类,并将类似的东西传递给我的测试方法

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

}

我们如何实现这一目标?

selenium selenium-webdriver testng dataprovider testng-dataprovider
3个回答
0
投票

使用您拥有的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());
}

0
投票
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
投票

它在QAF-TestNG extension中得到支持。在使用内置或自定义数据提供程序时,您可以在测试方法中使用one or more complex object参数。对于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());
}

您需要确保bean类中的属性名称必须与列名称匹配(按任何顺序)。使用自定义数据提供程序时,需要返回ListMap<String, Object>或具有Map的Object [] []的Iterator,如果需要创建自定义数据提供程序,请参阅few example

© www.soinside.com 2019 - 2024. All rights reserved.