(九)TestNG學(xué)習(xí)之路—失敗測試重跑

目錄

(一)TestNG學(xué)習(xí)之路—HelloWorld入門
(二)TestNG學(xué)習(xí)之路—注解及屬性概覽
(三)TestNG學(xué)習(xí)之路—TestNG.xml/YAML
(四)TestNG學(xué)習(xí)之路—注解詳述之@Test
(五)TestNG學(xué)習(xí)之路—注解詳述之參數(shù)化
(六)TestNG學(xué)習(xí)之路—注解詳述之@Factory
(七)TestNG學(xué)習(xí)之路—注解詳述之忽略測試
(八)TestNG學(xué)習(xí)之路—注解詳述之并發(fā)
(九)TestNG學(xué)習(xí)之路—失敗測試重跑
(十)TestNG學(xué)習(xí)之路—編碼執(zhí)行TestNG
(十一)TestNG學(xué)習(xí)之路—BeanShell高級用法
(十二)TestNG學(xué)習(xí)之路—注解轉(zhuǎn)換器
(十三)TestNG學(xué)習(xí)之路—方法攔截器
(十四)TestNG學(xué)習(xí)之路—TestNG監(jiān)聽器
(十五)TestNG學(xué)習(xí)之路—依賴注入
(十六)TestNG學(xué)習(xí)之路—測試報(bào)告
(十七)基于TestNG+Rest Assured+Allure的接口自動(dòng)化測試框架

前言

在案例執(zhí)行過程中,往往需要對失敗的案例進(jìn)行重跑融虽,TestNG亦提供相應(yīng)的實(shí)現(xiàn)方案麦牺。

示例

當(dāng)套件中的測試執(zhí)行失敗時(shí)捣鲸,TestNG都會創(chuàng)建一個(gè)名為testng-failed.xml的文件吁断,該XML文件包含運(yùn)行失敗的方法的信息擦俐,允許您快速重現(xiàn)失敗佣蓉,而不必運(yùn)行整個(gè)測試酸舍,如下所示:
編寫測試類:

import org.testng.Assert;
import org.testng.annotations.*;

public class TestNGHelloWorld1 {
    @BeforeTest
    public void bfTest() {
        System.out.println("TestNGHelloWorld1 beforTest!");
    }

    @Test(expectedExceptions = ArithmeticException.class, expectedExceptionsMessageRegExp = ".*zero")
    public void helloWorldTest1() {
        System.out.println("TestNGHelloWorld1 Test1!");
        int c = 1 / 0;
        Assert.assertEquals("1", "1");
    }

    @Test()
    @Parameters(value = "para")
    public void helloWorldTest2(@Optional("Tom")String str) {
        Assert.assertEquals("1", "2");
        System.out.println("TestNGHelloWorld1 Test2! "+ str);

    }

    @AfterTest
    public void AfTest() {
        System.out.println("TestNGHelloWorld1 AfterTest!");
    }
}

執(zhí)行:

D:\IntelliJ_IDEA_workspace\TestNG>java -classpath "%classpath%;D:\IntelliJ_IDEA_workspace\TestNG\lib" org.testng.TestNG -d tom testng14.xml

執(zhí)行后,可發(fā)現(xiàn)tom目錄下褐捻,生成了一個(gè)testng-failed.xml文件掸茅。


testng-failed.xml

testng-failed.xml內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite guice-stage="DEVELOPMENT" name="Failed suite [All Test Suite]">
  <test name="Test(failed)">
    <parameter name="para" value="Tomandy"/>
    <classes>
      <class name="TestNGHelloWorld1">
        <methods>
          <include name="helloWorldTest2" invocation-numbers="0"/>
          <include name="AfTest"/>
          <include name="bfTest"/>
        </methods>
      </class> <!-- TestNGHelloWorld1 -->
    </classes>
  </test> <!-- Test(failed) -->
</suite> <!-- Failed suite [All Test Suite] -->

后續(xù)需要重跑失敗案例,只需執(zhí)行testng-failed.xml即可柠逞。但是在持續(xù)集成實(shí)施過程中,我們更希望的是用例執(zhí)行失敗后自動(dòng)重跑景馁,可通過TestNG提供的retryAnalyzer實(shí)現(xiàn)板壮,示例如下:
實(shí)現(xiàn)IRetryAnalyzer。

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class MyRetry implements IRetryAnalyzer {

    private int retryCount = 0;
    private static final int maxRetryCount = 3;

    public boolean retry(ITestResult iTestResult) {
        if (retryCount < maxRetryCount) {
            retryCount++;
            return true;
        }
        return false;
    }
}

helloWorldTest2方法添加retryAnalyzer:

import org.testng.Assert;
import org.testng.annotations.*;

public class TestNGHelloWorld1 {
    @BeforeTest
    public void bfTest() {
        System.out.println("TestNGHelloWorld1 beforTest!");
    }

    @Test(expectedExceptions = ArithmeticException.class, expectedExceptionsMessageRegExp = ".*zero")
    public void helloWorldTest1() {
        System.out.println("TestNGHelloWorld1 Test1!");
        int c = 1 / 0;
        Assert.assertEquals("1", "1");
    }

    @Test(retryAnalyzer = MyRetry.class)  //失敗重跑
    @Parameters(value = "para")
    public void helloWorldTest2(@Optional("Tom")String str) {
        Assert.assertEquals("1", "2");
        System.out.println("TestNGHelloWorld1 Test2! "+ str);

    }

    @AfterTest
    public void AfTest() {
        System.out.println("TestNGHelloWorld1 AfterTest!");
    }
}

執(zhí)行后合住,可發(fā)現(xiàn)helloWorldTest2方法重跑了3遍绰精。


retry
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撒璧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笨使,更是在濱河造成了極大的恐慌卿樱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硫椰,死亡現(xiàn)場離奇詭異繁调,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)靶草,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蹄胰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奕翔,你說我怎么就攤上這事裕寨。” “怎么了派继?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵宾袜,是天一觀的道長。 經(jīng)常有香客問我驾窟,道長庆猫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任纫普,我火速辦了婚禮阅悍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昨稼。我一直安慰自己节视,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布假栓。 她就那樣靜靜地躺著寻行,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匾荆。 梳的紋絲不亂的頭發(fā)上拌蜘,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音牙丽,去河邊找鬼简卧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烤芦,可吹牛的內(nèi)容都是我干的举娩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铜涉!你這毒婦竟也來了智玻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤芙代,失蹤者是張志新(化名)和其女友劉穎吊奢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纹烹,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡页滚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滔韵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻谦。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖陪蜻,靈堂內(nèi)的尸體忽然破棺而出邦马,到底是詐尸還是另有隱情,我是刑警寧澤宴卖,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布滋将,位于F島的核電站,受9級特大地震影響症昏,放射性物質(zhì)發(fā)生泄漏随闽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一肝谭、第九天 我趴在偏房一處隱蔽的房頂上張望掘宪。 院中可真熱鬧,春花似錦攘烛、人聲如沸魏滚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼠次。三九已至,卻和暖如春芋齿,著一層夾襖步出監(jiān)牢的瞬間腥寇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工觅捆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赦役,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓栅炒,卻偏偏與公主長得像扩劝,于是被迫代替她去往敵國和親庸论。 傳聞我的和親對象是個(gè)殘疾皇子职辅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 感謝原作者的奉獻(xiàn)棒呛,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩閱讀 14,042評論 1 35
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)域携,斷路器簇秒,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 小的時(shí)候遙想28歲的自己,是一個(gè)遙遠(yuǎn)模糊的影像秀鞭,可轉(zhuǎn)眼就到來小的時(shí)候所遙想的未來趋观,來到了自己28歲生日到來前的現(xiàn)在...
    海燕隨手記閱讀 302評論 0 0
  • 游烈士陵園有感 2017年7月8日肖靜 今天天氣炎熱,上午我們小紅旗實(shí)踐隊(duì)前往鄭州烈士陵園進(jìn)行參觀锋边,烈士——一個(gè)讓...
    我想靜靜_24d6閱讀 156評論 0 0