我使用testng进行了一系列回归测试: -
<suite>
<test>
<classes>
<class name="test1"/>
<class name="test2"/>
<class name="test3"/>
<class name="test4"/>
<class name="test5"/>
</classes>
</test>
</suite>
我在测试3中进行了闪烁测试。有时它会抛出NoSuchElementException(这些是selenium测试)。当遇到这样的异常时会出现问题,但是当断言失败时就会出现问题 - 在这种情况下,套件会继续。
有时,套件继续测试4,有时整个套件在发生故障时停止。
示例测试类: -
public class ItineraryViewTest extends TestBase {
@BeforeClass
@Parameters({"login", "username", "password", "userReference"})
public void addAPackage(String login, String username, String password){
if (Objects.equals(login, "true")) {
loginPage().loginWith(username, password, userReference);
}
@AfterMethod
public void closeItineraryView(){
itineraryPage().closeItineraryView();
}
@Test(description = "Tests Itinerary view can be selected")
public void itineraryViewCanBeSelected() {
itineraryPage().selectItineraryView();
assertTrue("Itinerary view was not displayed",
(itineraryPage().itineraryViewDisplayed()));
}
}
基类:
public class TestBase
@BeforeClass
@Parameters({"env", "browser", "login", "mode", "emulatorMode"})
public void initialiseTests(String env, String browser, String login, String mode, String emulatorMode) throws MalformedURLException {
APPLICATION_LOGS.debug("Running @BeforeClass");
EnvironmentConfiguration.populate(env);
WebDriverConfigBean webDriverConfig = aWebDriverConfig()
.withBrowser(browser)
.withDeploymentEnvironment(env)
.withSeleniumMode(mode);
//new driver gets insantiated here in this openBrowser method
driver = WebDriverManager.openBrowser(webDriverConfig, getClass());
//unrelated code...
@AfterClass
public void afterClass() {
APPLICATION_LOGS.debug("Running @AfterClass");
driver.quit();
}
@AfterSuite()
public void afterSuite() {
APPLICATION_LOGS.debug("Running @AfterSuite");
extent.flush();
}
答案 0 :(得分:0)
您使用的是什么版本的testng?旧版本(6.9.something)中存在导致此问题的错误。
我建议验证您使用的是最新版本。
好吧,没有任何东西从你的代码或堆栈跟踪中跳出来...所以它可能有多种原因。我唯一的建议是将测试步骤设置为始终运行....就像这样:
@Test(alwaysRun = true)