【发布时间】:2014-05-07 14:24:31
【问题描述】:
我有一个 Excel 电子表格,其中存储了所有测试信用卡。这些信用卡有不同的类型。其中一些是 VISA,另一些是 MasterCard、Amex 等......
我有一个测试案例,我有时想使用 VISA 卡,有时想使用 MasterCard 卡。
是否可以将参数传递给@DataProvider?
这是我的 @DataProvider 代码:
@DataProvider(name="dpCreditCards")
public Object[][] getCreditCards() {
Object[][] testData = null;
try {
FileInputStream fis = new FileInputStream(dir);
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet worksheet = workbook.getSheet("Credit Cards");
String type = "";
String cardNumber = "";
int numOfRows = worksheet.getPhysicalNumberOfRows();
int j = 0;
if (numOfRows > 0) {
for (int i = 1; i < numOfRows; i++) {
XSSFRow r = worksheet.getRow(i);
if (r.getCell(0).getCellType() == Cell.CELL_TYPE_NUMERIC) {
type = Integer.toString((int)r.getCell(0).getNumericCellValue());
} else if (r.getCell(0).getCellType() == Cell.CELL_TYPE_STRING) {
type = r.getCell(0).getStringCellValue();
}
if (type.equalsIgnoreCase("visa"))
j++;
}
testData = new Object[j][1];
}
for (int i = 1; i < numOfRows; i++) {
XSSFRow r = worksheet.getRow(i);
if (r.getCell(0).getCellType() == Cell.CELL_TYPE_NUMERIC) {
type = Integer.toString((int)r.getCell(0).getNumericCellValue());
} else if (r.getCell(0).getCellType() == Cell.CELL_TYPE_STRING) {
type = r.getCell(0).getStringCellValue();
}
if (type.equalsIgnoreCase("visa")) {
if (r.getCell(1).getCellType() == Cell.CELL_TYPE_NUMERIC) {
cardNumber = Integer.toString((int)r.getCell(1).getNumericCellValue());
} else if (r.getCell(1).getCellType() == Cell.CELL_TYPE_STRING) {
cardNumber = r.getCell(1).getStringCellValue();
}
testData[i-1][0] = cardNumber;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return testData;
}
我已经检查了这个链接:http://testng.org/doc/documentation-main.html#parameters-dataproviders,但找不到任何适合我的东西。它建议将方法 m 作为参数传递给数据提供者,但我找不到 m 具有的有用方法。
提前致谢
【问题讨论】:
-
您不能以您想要的方式将参数传递给提供者。相反,您可能会将您的数据提供者考虑为不同卡类型的单独方法,然后使用选择不同卡类型提供者的测试方法。
-
@BobDalgleish 你建议使用方法名来解析数据吗?如果是,我的方法名称对于所有情况都是相同的。
-
没有。我建议您适当地重构测试方法,以便您可以选择将哪些实际测试应用于哪些数据。
-
也许这会有所帮助? stackoverflow.com/questions/21290122/…
-
@user1058106 这解决了我的问题。谢谢!!!
标签: java selenium selenium-webdriver testng