[英]TestNG does not continue execute tests after failure
我有一個帶有頁面對象模型的測試自動化框架。 我所有的測試都位於同一包中的單獨類中。
在testng.xml我有
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test">
<test name="SmokeTest">
<classes>
<class name="name.test1"/>
<class name="name.test2"/>
<class name="name.test3"/>
</classes>
</test>
</suite>
問題是,如果第一個測試將失敗,則在運行TestNG.xml之后,它將停止測試執行。 但我想繼續執行所有測試用例。
我在項目上使用Jenkins,如果其中一項測試失敗,它將立即停止執行。
測試例
public class LoginTestTest {
public AndroidDriver<AndroidElement> driver;
public AOWebClient aoWebClient;
AOWebClient aoWeb;
public LoginTestTest(AndroidDriver<AndroidElement> driver, AOWebClient aoWeb){
this.driver = driver;
this.aoWeb = aoWeb;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
public LoginTestTest() {
}
SoftAssert softAssert = new SoftAssert();
@BeforeClass
public void setUp() throws Exception {
driver = DesiredCapabilitiesSetup.startAppiumServer();
aoWebClient = DesiredCapabilitiesSetup.getAOWeb();
LogIn logIn = new LogIn(driver,aoWebClient);
logIn.logIn();
}
@org.testng.annotations.Test
public void goToSettings() throws InterruptedException {
HeaderMenu header = new HeaderMenu(driver,aoWeb);
HamburgerMenuList ham = new HamburgerMenuList(driver);
header.clickHamburgerButton();
header.clickHamburgerButton();
header.editButtonClick();
softAssert.assertAll();
}
@AfterClass
public void tearDown(ITestResult result) throws Exception {
if (result.getStatus() == ITestResult.FAILURE) {
TakeScreenshot screenshot = new TakeScreenshot();
screenshot.TakeScreenshot("screenshots/");
}
LogOut logOut = new LogOut(driver,aoWeb);
logOut.logOut();
}
}
如果我的測試在@Test
失敗,它將永遠不會繼續使用@AfterClass
方法。 我希望如果@Test
失敗,它將繼續使用@AfterClass
方法,並且在此類繼續執行后,從testng.xml
其他類執行測試。
xml中的套件標簽應包含configfailurepolicy =“ continue”。 這告訴testng,即使一個類中的配置失敗,您仍然希望在該套件中運行其他類。 請參閱文檔中的“ configfailurepolicy”。
因此,您的xml將變為:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test" configfailurepolicy="continue">
<test name="SmokeTest">
<classes>
<class name="name.test1"/>
<class name="name.test2"/>
<class name="name.test3"/>
</classes>
</test>
</suite>
從文檔中 :
alwaysRun:對於after方法(afterSuite,afterClass等):如果設置為true,則即使先前調用的一個或多個方法失敗或被跳過,此配置方法也將運行。
然后,只需將@AfterClass
替換為@AfterClass(alwaysRun = true)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.