如何使用 TestNG + Selenium WebDriver 使用不同的数据集多次运行相同的测试用例

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

我有一个实用程序类 DataManager.java,其中我编写了一种从 Excel 工作表读取数据的方法。

public static XSSFWorkbook xssfWorkbook;
public static XSSFSheet xssfSheet;

public static Object[][] readUserCredentials(String sheetName) {//return table data(2 dimensional object array)

try {
FileInputStream file = new FileInputStream(System.getProperty("user.dir") + "/TestData/Data.xlsx");
xssfWorkbook = new XSSFWorkbook(file);
xssfSheet = xssfWorkbook.getSheet(sheetName);
int totalRows = xssfSheet.getLastRowNum();
int totalCols = xssfSheet.getRow(1).getLastCellNum();

Object[][] data = new Object[xssfSheet.getLastRowNum()][xssfSheet.getRow(0).getLastCellNum()];
for (int r = 0; r < totalRows; r++) {
for (int c = 0; c < totalCols; c++) {
data[r][c] = xssfSheet.getRow(r + 1).getCell(c).toString();
 }
 }
xssfWorkbook.close();
file.close();
return data;

} catch (IOException e) {
        throw new RuntimeException(e);
}

}

我的测试用例位于 Tests 包 -> Login 包 -> LoginTest.java

@Test(dataProvider = "LoginCredentials")
public void Login(String email, String password){
LandingPage landingPage = new LandingPage();
landingPage.goToWebCentral();
LoginPage loginPage = new LoginPage();
loginPage.typeEmail(email);
loginPage.typePassword(password);

}

@DataProvider(name = "LoginCredentials")
public Object[][] getData(){
Object[][]loginData =  DataManager.readUserCredentials("Login");
return loginData;
}

这会产生 NullPointerException,并且不会多次运行测试用例。读取数据部分工作正常。

如何通过读取 Excel 中的多个数据来运行相同的测试用例,获取电子邮件和密码,输入凭据以登录帐户

selenium-webdriver pageobjects testng-dataprovider data-driven-tests page-factory
1个回答
0
投票

我通过添加@BeforeMethod注释而不是@BeforeClass解决了这个问题,因为@BeforeMethod在执行每个测试方法之前被调用,而@BeforeClass注释在开始所有测试用例之前仅被调用一次。

https://www.javatpoint.com/testng-beforemethod-annotation

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