簡體   English   中英

失敗后,TestNG不會繼續執行測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM