使用来自 Excel 的 DataProvider 数据的 Selenium 测试被忽略

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

我正在做一个 Java/Selenium/TestNG 项目,我有 3 个 Selenium 测试要使用 DataProviders 运行。我创建了一个文件读取器类,将 Excel 数据流式传输到一个对象,供我的 DataProvider 使用,无论出于何种原因,只会运行一张特定工作表上的测试。使用其他 2 张纸的测试将被忽略,我对此很陌生,所以非常感谢任何帮助,代码如下供您查看:

public static Object[][] getTestData(String sheetname){
    Object[][] data = null;

    try{
        FileInputStream fis = new FileInputStream(TEST_DATA_WORKBOOK_PATH);
        book = WorkbookFactory.create(fis);
        sheet = book.getSheet(sheetname);

        data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];

        for (int i = 0; i < sheet.getLastRowNum(); i++) {
            for (int j = 0; j < sheet.getRow(0).getLastCellNum(); j++) {
                data[i][j] =sheet.getRow(i + 1).getCell(j).toString();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(data);
    return data;
}

这是将正确运行的测试:

@Test(description = "register with valid info", dataProvider = "ValidRegDP", enabled = true)    
public void registrationTests02(String firstname, String lastname, String email, String address, String city, String state, String zip, String country, String username, String password){
    HomePage homePage = new HomePage(getDriver());
    LoginPage loginPage = homePage.clkLoginBtn();
    RegistrationPage regPage = loginPage.clkRegisterBtn();

    regPage.setFirstName(firstname)
            .setLastName(lastname)
            .setEmail(email)
            .setAddress(address)
            .setCity(city)
            .selectCountry(country)
            .selectState(state)
            .setZip(zip)
            .setUsername(username)
            .setPassword(password)
            .clkPrivacy()
            .clkContinue()
            .waitForPresence(By.xpath("//div[@class='alert alert-error alert-danger']"));

    Assert.assertEquals(getDriver().getCurrentUrl(), "https://automationteststore.com/index.php?rt=account/create");
}

@DataProvider(name = "ValidRegDP")
public static Object[][] getDataFromValRegProviders(){
    Object[][] data = ExcelReader.getTestData("goodRegistration");
    return data;
}

这个测试一直被忽略:

@Test(description = "login tests", dataProvider = "LoginProviders", enabled = true)
public void loginTests(String username, String password){
    HomePage homePage = new HomePage(getDriver());
    LoginPage loginPage = homePage.clkLoginBtn();
    loginPage.login(username, password);

    Assert.assertEquals(getDriver().getCurrentUrl(), "https://automationteststore.com/index.php?rt=account/login");
}


@DataProvider(name = "LoginProviders")
public static Object[][] getLoginProviders(){
    Object[][] data = ExcelReader.getTestData("login");
    return data;
}

我检查了工作表名称和 Excel 文件路径,它们是正确的,还尝试用不同的名称和不同的工作表名称创建一个新的 Excel 工作簿,但结果相同,我的测试只有一张工作表被正确读取(有效的注册数据表)

使用 DataProvider 的 Excel 文件的其他测试/测试仍然被忽略。我添加了 dataProviderClass 值以尝试让它工作,但相同的工作表/测试仍然被忽略,只有一个有效的注册测试运行。

我的终端在忽略测试时给出的唯一消息是

SLF4J:未找到 SLF4J 提供程序。 SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅https://www.slf4j.org/codes.html#noProviders。 错误 StatusLogger Log4j2 找不到日志记录实现。请将 log4j-core 添加到类路径中。

我也尝试将其添加到我的构建中,但测试仍然被忽略。我不确定还能尝试什么,任何帮助将不胜感激,谢谢你们!

java selenium-webdriver testng testng-dataprovider
© www.soinside.com 2019 - 2024. All rights reserved.