TestNG測試框架之失敗測試重跑
前言
在案例執行過程中,往往需要對失敗的案例進行重跑,TestNG亦提供相應的實現方案。
示例
當套件中的測試執行失敗時,TestNG都會建立一個名為testng-failed.xml的檔案,該XML檔案包含執行失敗的方法的資訊,允許您快速重現失敗,而不必執行整個測試,如下所示:
編寫測試類:
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!");
}
}
執行:
D:\IntelliJ_IDEA_workspace\TestNG>java -classpath "%classpath%;D:\IntelliJ_IDEA_workspace\TestNG\lib" org.testng.TestNG -d tom testng14.xml
執行後,可發現tom目錄下,生成了一個testng-failed.xml檔案。
testng-failed.xml內容如下:
<?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] -->
後續需要重跑失敗案例,只需執行testng-failed.xml即可。但是在持續整合實施過程中,我們更希望的是用例執行失敗後自動重跑,可通過TestNG提供的retryAnalyzer實現,示例如下:
實現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!");
}
}
執行後,可發現helloWorldTest2方法重跑了3遍。
連結:https://www.jianshu.com/p/11febc78a953
相關文章
- testng擴充套件 失敗的用例重跑套件
- TestNG測試用例重跑詳解及實踐最佳化
- Cypress系列(65)- 測試執行失敗自動重試
- Python做介面測試生成測試報告失敗Python測試報告
- ☕【Java技術指南】「TestNG專題」單元測試框架之TestNG使用教程指南(上)Java框架
- ☕【Java技術指南】「TestNG專題」單元測試框架之TestNG使用教程指南(下)Java框架
- TestNg 失敗用例重試自動被 ignored 怎麼辦?
- 資料驅動測試之——CSV+TestNG
- 資料驅動測試之—— Excel+TestNGExcel
- 單元測試工具 TestNG 使用
- 約跑APP測試APP
- Spring、Spring Boot和TestNG測試指南 – 共享測試配置Spring Boot
- React測試框架之enzymeReact框架
- JAVA單元測試框架-9-testng.xml管理依賴Java框架XML
- 一次失敗的App安全測試APP
- TestNg之XMl形式實現多執行緒測試XML執行緒
- 自動化測試實戰技巧:「用例失敗重試機制」實現方案分享
- JAVA單元測試框架-13-TestNG中的Listener監聽Java框架
- 軟體測試框架——自動化測試框架框架
- 使用 testng 做介面自動化測試
- 測試測試測試測試測試測試
- 自動化測試專案為何失敗
- 軟體測試是失敗者的賭注
- 前端測試框架前端框架
- 測試框架Jest框架
- 實用指南:使用Pytest Allure測試框架新增用例失敗截圖框架
- 測試平臺之介面測試
- 微服務測試之效能測試微服務
- 效能測試之測試指標指標
- TestNG+Maven+IDEA環境搭建+測試MavenIdea
- JUnit5的條件測試、巢狀測試、重複測試巢狀
- CDH 5.13 hue資料庫連線測試失敗資料庫
- 微服務測試之介面測試和契約測試微服務
- 【轉】測試用例編寫(功能測試框架)框架
- 測試 之Java單元測試、Android單元測試JavaAndroid
- TestNg失敗重跑—解決使用 dataProvider 引數化用例次數衝突問題IDE
- 新潮測試平臺之效能測試
- 功能測試之審批流測試