gpt4 book ai didi

java - 是否可以将参数传递给TestNG的@DataProvider?

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:34 26 4
gpt4 key购买 nike

我有一个 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 具有的有用方法。

提前致谢

最佳答案

一种方法是读取监听器中的参数,然后设置可在数据提供程序中使用的属性。

实现 ITestListener 或 ISuiteListener,具体取决于您构建测试的方式。在任何的 onStart 方法中设置全局卡属性或线程本地属性(同样取决于您如何顺序/并行运行测试)。

在您的数据提供程序中读取此属性。

关于java - 是否可以将参数传递给TestNG的@DataProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520496/

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