selenium实现失败重运行
UI自动化脚本执行过程中存在非常多的不稳定性,例如网络的不稳定,浏览器无响应等等,这些失败往往并不是产品中的错误。那么这时我们往往需要对执行失败的测试用例进行多次重跑,确认其是否确实失败。 那么失败重跑我们可以通过TestNG的功能来实现。
一旦测试方法失败,就会调用TestNG的IRetryAnalyzer接口的retry
方法。如果您想重新执行失败的测试用例,那么就让此方法返回true,如果不想重新执行测试用例,则返回false。
如下我们新建一个TestngRetry类,实现IRetryAnalyzer :
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult; /**
* 用例失败自动重跑逻辑
* @author Charlie.chen
*
*/
public class TestNGRetry implements IRetryAnalyzer {
public LogUtil log = new LogUtil(this.getClass());
private int retryCount = ;
private int maxRetryCount=; public boolean retry(ITestResult result) {
if (retryCount <= maxRetryCount) {
String message = "running retry for '" + result.getName() + "' on class " +
this.getClass().getName() + " Retrying " + retryCount + " times";
log.info(message);
retryCount++;
return true;
}
return false;
}
}
添加用例重跑监听器RetryListener,用例失败自动重跑功能
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation; /**
* 添加用例重跑监听器,用例失败自动重跑功能
*
* @author Charlie.chen
*
*/ public class RetryListener implements IAnnotationTransformer {
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
IRetryAnalyzer retry = annotation.getRetryAnalyzer();
if (retry == null) {
annotation.setRetryAnalyzer(TestNGRetry.class);
}
}
}
在testng.xml文件中配置自己编写的监听器
<listeners>
<listener class-name="com.dji.utils.RetryListener"/>
</listeners>
查看testng报告时,发现失败的用例在报告里生成了多份,改进办法
需新建一个类TestNGListener继承TestListenerAdapter,然后重写onFinish方法
@Override
public void onFinish(ITestContext testContext) {
log.info("Test Finish"); Iterator<ITestResult> listOfFailedTests = testContext.getFailedTests().getAllResults().iterator();
while (listOfFailedTests.hasNext()) {
ITestResult failedTest = listOfFailedTests.next();
ITestNGMethod method = failedTest.getMethod();
if (testContext.getFailedTests().getResults(method).size() > ) {
listOfFailedTests.remove();
} else {
if (testContext.getPassedTests().getResults(method).size() > ) {
listOfFailedTests.remove();
}
}
} }
selenium实现失败重运行的更多相关文章
- pytest - 失败重运行机制:rerun
失败重运行机制 用例失败的情况下,可以重新运行用例 一旦用例失败,马上重新运行 安装插件:pip install pytest-rerunfailures 使用命令:--reruns 重试次数 如 - ...
- pytest框架之rerunfailures失败重运行机制
web自动化测试中,稳定性在整个测试运行中都至关重要,但不能保证测试脚本或者测试环境一直都能够稳定,它牵扯到诸多因素,在这里就不赘述,pytest框架相较于unittest的一大优势就在于拥有用例失败 ...
- TestNG监听器实现用例运行失败自动截图、重运行功能
注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...
- python3 unittest框架失败重跑加截图支持python2,python3
github源码地址下载:https://github.com/GoverSky/HTMLTestRunner_cn.git 解压文件后取出/HTMLTestRunner_cn.py文件丢进C:\Py ...
- pytest 失败重跑截图
1.环境准备 /*@param: 作者:流浪的python Date:2019/01/19 env:python 3.7(由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9 ...
- 【转载】扩展Robot Framework,实现失败用例自动再执行(失败重跑)
使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了RFS框架下,失败重跑的方法: 通过改写RobotFramework源代码增加--retry选项,实现test级别的失败 ...
- testng增加失败重跑机制
注: 以下内容引自 http://www.yeetrack.com/?p=1015 testng增加失败重跑机制 Posted on 2014 年 10 月 31 日 使用Testng框架搭建自动测试 ...
- pytest文档8-html报告报错截图+失败重跑
前言 做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告. conftest.py 1.失败截图可以写到conftest.p ...
- testng失败重跑
重跑失败场景 1.要添加两个文件 背景:因为这里只是想单独展示失败的重跑的案例,所以先暂时把app这块的运行注释掉,只跑一个简单的demo,就一个简单类,类中就3个测试方法,失败重跑的原理是,运行方法 ...
随机推荐
- BZOJ3456 城市规划 【分治NTT】
题目链接 BZOJ3456 题解 据说这题是多项式求逆 我太弱不会QAQ,只能\(O(nlog^2n)\)分治\(NTT\) 设\(f[i]\)表示\(i\)个节点的简单无向连通图的数量 考虑转移,直 ...
- codeforces838D - Airplane Arrangements
太妙啦! 我们把座位摆成一个环,在添加另一个座位,表示坐了这个位置就会有人生气,那么我们现在要求的就是没人坐它的方案数Ans,但是这个并不好求,我们发现对于每个位置,它们的Ans都是一样的,而且Ans ...
- JavaScript各变量类型的判断方法
我们很容易被漂亮的代码吸引,也不知不觉的在自己的代码库中加入这些.却没有冷静的想过它们的优劣.这不,我就收集了一系列形如 "是否为……?" 的判断的boolean函数. isNul ...
- Educational Codeforces Round 2 B. Queries about less or equal elements
打开题目连接 题意:给2个数组(无序的)啊a,b,判断b数组中的每一个元素大于a数组中个数. ACcode: #include <iostream> #include <vector ...
- 设置小于12px的字体
.small-font{ font-size:12px; -webkit-transform-origin-x: 0; -webkit-transfo ...
- 高级列表控件ListCtrl关联的MFC中的类:CListCtrl
高级列表控件ListCtrl关联的MFC中的类:CListCtrl■ 报表样式ListCtrl常用操作:1.添加列标题头:InsertColumn2.获取与设置列宽:GetColumnWidth.Se ...
- 关于asp.net中gridview的问题,关于footer,16aspx上下的英语交流网程序,管理员的添加和修改有问题
css部分 这是添加用户的方法 但是A.AdminName 和后面的A.取到的都是空值protected void GridView1_RowCommand(object sender,GridVie ...
- 学习Flash 3D图形图像知识的网络资源集合
1. 华中科技大学计算机学院开放式课程--计算机图形学 http://cs.hust.edu.cn/webroot/courses/csgraphics/index.php 2.深入Stage3D_7 ...
- Android APP打包时,出错:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....
"app_name" is not translated in "af" (Afrikaans), "am" (Amharic), &quo ...
- Linux文本过滤常用命令(转)
01 cat命令 通常用来显示文本文件的内容 一般用来查看比较短的文本文件,因为其缓冲区有限 -s选项可以用来合并文件中多余的空行,多个空行将被压缩为一个空行; -n选项可以显示行号 -b选项可以跳过 ...