如何解决testng执行用例失败自

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决testng执行用例失败自相关的知识,希望对你有一定的参考价值。

一、首先新建Java类实现IRetryAnalyzer接口,代码如下(主要配置自动重跑次数maxRetryCount):

[java] view plain copy

    public class OverrideIReTry implements IRetryAnalyzer   

    public static Logger logger=Logger.getLogger(OverrideIReTry.class);  

    public int retryCount=0;  

    private static int maxRetryCount ;  

    static   

    //外围文件配置最大运行次数,失败后重跑maxRetryCount+1次  

    maxRetryCount = 2;//也就是失败后重跑3次  

    logger.info("maxRunCount=" + (maxRetryCount));  

      

    @Override public boolean retry(ITestResult iTestResult)   

    if(retryCount <= maxRetryCount)String message = "running retry for \'" + iTestResult.getName() + "\' on class " +   

    this.getClass().getName() + " Retrying " + retryCount + " times";   

    logger.info(message);  

    Reporter.setCurrentTestResult(iTestResult);  

    Reporter.log("RunCount=" + (retryCount + 1));   

    retryCount++;   

    return true;  

     return false;  

      

      

    二、新建Java类实现IAnnotationTransformer接口,代码如下:

    [java] view plain copy

    package TezitongAll;  

    import java.lang.reflect.Constructor;  

    import java.lang.reflect.Method;  

    import org.testng.IAnnotationTransformer;  

    import org.testng.IRetryAnalyzer;  

    import org.testng.annotations.ITestAnnotation;  

    public class RetryListener implements IAnnotationTransformer   

    @Override  

    public void transform(ITestAnnotation annotation, @SuppressWarnings("rawtypes") Class testClass,@SuppressWarnings("rawtypes") Constructor testConstructor, Method testMethod)   

    IRetryAnalyzer retry = annotation.getRetryAnalyzer();  

    if (retry == null)   

    annotation.setRetryAnalyzer(OverrideIReTry.class);  

      

      

      

参考技术A assert 断言失败一般是不会阻断执行的,testng中会通过断言的成功还是失败来记录你用例的成功或者失败,当然,这个都是可以自动定义的,至少我使用testng的assert时,断言失败是不会终止执行的。
如果你遇到断言失败终止的解决办法有两个:
第一 重写 assert类,重写里面Assert.assertequils 等方法,使用try和catch 抛出异常来使代码不终止
第二 写个assert的监听类,具体怎么写,请google或者百度

testng.xml 执行多个测试用例

1.在工程名字上点击右键,点击【New】-->【File】

2.在弹出的【New File】对话框中的【File name】输入【testng.xml】,点击【Finish】即创建了一个testng的配置文件

 3.在testng.xml中做如下编辑:

<suite name="TestSuite">          自定义的测试集合名称
    <test name="test1">           定义测试名称
        <classes>                 定义被运行的测试类
            <class name="cn.gloryroad.Annotation"/>             
            <class name="cn.gloryroad.FirstTestNGDemo"/>
        </classes>
    </test>
</suite>

4.测试结果如下:

 

以上是关于如何解决testng执行用例失败自的主要内容,如果未能解决你的问题,请参考以下文章

TestNG测试用例重跑详解及实践优化

自动化断言失败后,测试用例还会继续执行吗

TestNG中Appium测试用例的顺序执行导致测试用例失败

如何使用 testng.xml 从大型 TestNG 套件执行一项测试?

TestNG,Selenium 如何在多个类之间共享对象

如何在TestNG报告中显示消息(对于通过的测试用例)