前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium系列|Appium测试框架完善(三)

Appium系列|Appium测试框架完善(三)

作者头像
测试邦
发布2019-07-24 09:52:05
5520
发布2019-07-24 09:52:05
举报
文章被收录于专栏:测试邦测试邦

失败重跑监听器使用

当测试脚本有一定数量的情况下,每次执行完所有的测试脚本会发现或多或少的测试脚本执行失败了,失败主要是两种原因一种是源程序bug,另外一种是测试脚本由于各方面的原因执行失败了(如脚本稳定性、网络环境、机器连接问题等),如果是后一种原因造成的通常再次执行就会测试脚本就会通过,为了减少后期分析自动化执行结果的时间很有必要添加失败重跑逻辑。正好TestNG提供了个监听器给我们使用,我们现在来具体看下怎么来实现和使用这个监听器。

可以先新建一个类如Retry,让其实现IRetryAnalyzer,然后复写retry方法,在这个方法里定义重跑的次数,具体如下所示:

代码语言:javascript
复制
package appium.common;

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

public class Retry implements IRetryAnalyzer {
    //定义重跑的次数
    int retryCount = 1;
    int index = 1;
    
    //return true的时候会重跑,return false则不会
    public boolean retry(ITestResult iTestResult) {
        if(index <= retryCount){
            index++;
            return true;
        }
        return false;
    }
}

上面我们定义了重跑的次数为1。

接着还需要新建一个类如RerunListener,然后让其实现IAnnotationTransformer接口,然后设置重试的处理类为上面新建的Retry类,具体如下:

代码语言:javascript
复制
package appium.listeners;

import appium.common.Retry;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class RerunListener implements IAnnotationTransformer {

    public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) {
        IRetryAnalyzer iRetryAnalyzer = iTestAnnotation.getRetryAnalyzer();
        if(iRetryAnalyzer == null){
            //设置重试的类为Retry
            iTestAnnotation.setRetryAnalyzer(Retry.class);
        }
    }
}

这时候还需要去要执行的suite文件里添加这个监听器的实现类,如下所示:

代码语言:javascript
复制
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
    <listeners>
        <listener class-name="appium.listeners.TestListener"/>
        <listener class-name="appium.listeners.RerunListener"/>
    </listeners>
    <test name="Regression1">
        <classes>
            <class name="appium.testcases.login.LoginPermissionCheck"/>
            <class name="appium.testcases.versioncheck.VersionCheck"/>
        </classes>
    </test>
</suite>

同样执行下这个文件,看下VersionCheck会不会执行两次(因为这个类会执行失败,如果重跑机制生效就会执行两次)

执行完确实可以看到VersionCheck的test方法被执行了两次,如下所示:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试邦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 失败重跑监听器使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档