淘先锋技术网

首页 1 2 3 4 5 6 7

1.创建一个类,继承 IRetryAnalyzer 接口并实现 retry 方法,实现重跑逻辑

public class Retry implements IRetryAnalyzer {
	
    private int retryCount = 1;

    @Override
    public boolean retry(ITestResult result) {
        // 控制失败跑几次
        int maxRetryCount = 3;
        if (retryCount < maxRetryCount) {
            retryCount++;
            return true;
        }
        return false;
    }
}

2.用例添加注解即可实现单个用例重跑

3.也可以通过全局设置实现所有用例均失败重跑:创建一个类,继承 IAnnotationTransformer接口并实现 transform方法

public class RetryListener implements IAnnotationTransformer {

    @Override
	public void transform(ITestAnnotation annotation, Class testClass,
            Constructor testConstructor, Method testMethod) {
        //判断当前用例是否已经配置失败重试
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
            annotation.setRetryAnalyzer(Retry.class);
        }
    }
}

4.在xml文件中添加listener,需要注意IAnnotationTransformer 监听器不能通过测试类文件中@Listeners添加

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="xxx" parallel="tests" verbose="10">
	<listeners>
		<listener class-name="com.test.retry.RetryListener"/>
	</listeners>
	<test verbose ="10"  name="xxx">
		<classes>
			<class name="xxx">
				<methods>
					<include name="xxxxx" />
				</methods>
			</class>
		</classes>
	</test>
</suite>

5.配置完成后运行用例时会自动保留最后一次运行结果,前几次结果均会自动忽略,不需要额外配置(笔者TestNg版本6.14.2)
在这里插入图片描述