1

我的包中有 3 个测试类。第一个配置:

public class PageVisibilityConfig {
WebDriver driver;

@BeforeSuite
public void beforeSuite() {
    DOMConfigurator.configure("log4j.xml");
    Log.startTestCase("Page Visibility Suite");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    driver = BrowserFactory.getBrowser("Firefox");

}

@AfterSuite(enabled = true)
public void afterSuite() {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    BrowserFactory.closeAllDriver();
    Log.endTestCase("Page Visibility Suite");
}

@AfterGroups(groups = { "admin", "user" })
public void afterGroupLogOut() {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();
    usermenu.logout();
}
}

第一个真正的测试类:

public class PageVisibilityAdmin {
WebDriver driver;

@BeforeClass(groups = { "admin" }, enabled = true)
public void beforeClassLogin() {
    driver = BrowserFactory.getBrowser("Firefox");

    Log.startTestCase("Page Visibility Admin test cases");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());

    LogIn login = PageFactory.initElements(driver, LogIn.class);
    login.signupLogin();
    login.loginViaCredentials();

    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();

    Assert.assertTrue(usermenu.isAdmin());
}

@DataProvider(name = "visibility_admin")
public static String[][] providedData() {
    return com.resources.SQLConForDataProvider
            .executeQuery("SELECT url FROM cdb_1cc755a513.visibility where admin='1' limit 1");
}

@Test(dataProvider = "visibility_admin", groups = { "admin" }, enabled = true)
public void adminRun(String url) {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    Log.info("Try " + Util.SUT + url);

    driver.get(Util.SUT + url);

    Log.info("Actual page " + driver.getCurrentUrl());

    Assert.assertEquals(driver.getCurrentUrl(), Util.SUT + url);
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("not found"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("login"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("error"));
}

}

有问题的第三个:

public class PageVisibilityUser {
WebDriver driver;

@BeforeClass(groups = { "user" }, enabled = true)
public void beforeGroupsLogin() {
    driver = BrowserFactory.getBrowser("Firefox");

    Log.startTestCase("Page Visibility User test cases");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());

    LogIn login = PageFactory.initElements(driver, LogIn.class);
    login.signupLogin();
    login.loginViaFacebook();

    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();

    Assert.assertFalse(usermenu.isAdmin());
}

@DataProvider(name = "visibility_user")
public static String[][] providedData() {
    return com.resources.SQLConForDataProvider
            .executeQuery("SELECT url FROM cdb_1cc755a513.visibility where not_added_user='1' limit 1");
}

@Test(dataProvider = "visibility_user", groups = { "user" }, enabled = true)
public void userRun(String url) {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    Log.info("Try " + Util.SUT + url);

    driver.get(Util.SUT + url);

    Log.info("Actual page " + driver.getCurrentUrl());

    Assert.assertEquals(driver.getCurrentUrl(), Util.SUT + url);
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("not found"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("login"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("error"));

}
}

基本上我正在检查 url 是否可用于不同的角色。我的问题是:如果我将这些类作为套件或包运行,最后一个类将在 sql 结果集中出现“额外行”(为空)而失败。如果我只运行配置类和最后一个类,它运行时没有错误。还有一个例外(这很奇怪):

运行 TestSuite java.sql.SQLException:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937) 处的 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) 结果集结束后。 mysql.jdbc.SQLError.createSQLException(SQLError.java:926) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872) 在 com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:787) 在 com .mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5244) 在 com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5167) 在 com.resources.SQLConForDataProvider.executeQuery(SQLConForDataProvider.java:47) 在 com。 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 处 sun.reflect.NativeMethodAccessorImpl 处的 pageVisibility.PageVisibilityUser.providedData(PageVisibilityUser.java:39)。调用(NativeMethodAccessorImpl.java:57)

4

0 回答 0