1、testng失败重跑机制 2、编码执行testng 3、Tomandy关于testng博客链接 4、testng_javadoc 5、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

 

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遍。

 

二、编码执行TestNG:

前言

《TestNG学习之路—HelloWorld入门》提到了TestNG执行测试的3种方式,其实TestNG也提供方法供使用者编码执行用例或创造虚拟的testng.xml文件。

示例

官网提供的例子如下:

 

TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { Run2.class });
testng.addListener(tla);
testng.run(); 

该例子创建一个TestNG的对象实例,然后执行Run2类的测试方法,上述案例中,你可以自由选择使用适配器类org.testng.TestListenerAdapter或实现org.testng.ITestListener接口。
一般情况下,我们都是通过testng.xml来执行测试,TestNG亦支持创建虚拟的xml文件,然后再执行测试。
假如testng.xml文件如下:

 

<suite name="TmpSuite" >
  <test name="TmpTest" >
    <classes>
      <class name="test.failures.Child"  />
    <classes>
    </test>
</suite>

对于以上xml文件,可以通过代码来创建虚拟的xml文件,代码如下所示:

 

XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
 
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass("test.failures.Child"));
test.setXmlClasses(classes) ;

执行虚拟xml文件代码如下:

 

List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run(); 

最后,强烈建议阅读javadoc以了解其他API的应用。

三、简书Tomandy老师关于testng博客链接:https://www.jianshu.com/p/8b382ea49021

四、javadoc之testng:javadoc

五、testng教程

详细的内容可以参考:https://www.yiibai.com/testng/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值