gpt4 book ai didi

java - 从 Excel 读取数据以提供测试用例

转载 作者:行者123 更新时间:2023-12-01 13:03:46 25 4
gpt4 key购买 nike

我有一个 ExcelReader 类,它从 Excel 读取数据并填充相应的列表。

public static List<Address> addressList;
public static List<User> userList;

上面的列表是由 ExcelReader 像这样填充的:

addressList = new ArrayList<Address>();
Address a = new Address();
a.setAddress1(r.getCell(0).getStringCellValue());
a.setCity(r.getCell(1).getStringCellValue());

我想在我的 Selenium 测试用例中使用这些数据。我打算使用 TestNG 的 @DataProvider 标签来提供测试用例,但它只接受 Object[][] 和 Iterator。

有没有办法将这些列表转换为 Object[][] 格式?

如果您更喜欢使用 @DataProvider 以外的任何内容,我也愿意接受任何建议。

提前致谢

最佳答案

有很多方法可以做到这一点,但这里有一个想法。 I wrote an example here就可以了。

这个想法的总体要点是,使用 MetaModel api :

public static Object[][] get2ArgArrayFromRows( List<Row> rows ) {
Object[][] myArray = new Object[rows.size()][2];
int i = 0;
SelectItem[] cols = rows.get(0).getSelectItems();
for ( Row r : rows ) {
Object[] data = r.getValues();
for ( int j = 0; j < cols.length; j++ ) {
if ( data[j] == null ) data[j] = ""; // force empty string where there are NULL values
}
myArray[i][0] = cols;
myArray[i][1] = data;
i++;
}
logger.info( "Row count: " + rows.size() );
logger.info( "Column names: " + Arrays.toString( cols ) );
return myArray;
}

public static Object[][] getCsvData( File csvFile )
{
CsvConfiguration conf = new CsvConfiguration( 1 );
DataContext csvContext = DataContextFactory.createCsvDataContext( csvFile, conf );
Schema schema = csvContext.getDefaultSchema();
Table[] tables = schema.getTables();
Table table = tables[0]; // a representation of the csv file name including extension
DataSet dataSet = csvContext.query()
.from( table )
.selectAll()
.where("run").eq("Y")
.execute();
List<Row> rows = dataSet.toRows();
Object[][] myArray = get2ArgArrayFromRows( rows );
return myArray;
}

现在,上面的代码只是一个粗略的想法。你真正需要做的是将列和数据合并到Map<String,String>中对象,然后将其作为第一个参数传递回测试,其中包含 CSV 文件中的所有参数,包括浏览器类型。然后,作为第二个参数,将其设置如下:

myArray[i][1] = new WebDriverBuilderHelper();

然后,在 @Test 注解的方法中,实例化驱动程序:

@Test(dataProvider = "dp") 
public void testIt( Map<String,String> map, WebDriverBuilderHelper wdhelper ) {
wdhelper.instantiateBrowser( map.get("browser") );
wdhelper.navigateTo(url);
....

关于java - 从 Excel 读取数据以提供测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23372679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com