在UI自动化测试中使用flaky插件运行失败用例
在UI自动化测试中,有时候经常会提示跑用例失败,在单步或单个用例调试时,用例却成功,这个失败的因素主要有环境、代码或前端定位等原因。
可以看这篇文章《我们是如何让UI测试变得稳定的》中有详细说明,但是,在这里,我们不讨论问题,我们来看看优化
项目中原来的自动化框架是基本nose的,nose中有一个选项为:
--failed Run the tests that failed in the last test run.
可以单独运行上次测试中失败的用例,但貌似与我的想法有点背离,我的需求是失败后再运行一次用例,然后报告可以正常输出
无独有偶,正好看到有一个flaky可以支持这种需求,具体的介绍和安装,有前辈写了:http://blog.csdn.net/liuchunming033/article/details/45916389
但在nose框架中有点差异,如下:
#coding:utf-8
'''
Created on 2016年6月22日 @author: huzq
'''
from nose.tools import with_setup
import logging
from test_case import new
from nose.tools import ok_
from nose.tools import eq_
import nose
import os
from nose.plugins.attrib import attr
from nose.plugins.skip import SkipTest
import sys
from pdb import set_trace #TODO:jfjfjf
log = logging.getLogger(__name__) @attr(mode=1)
def test_learn_1():
u'''测试取消'''
print 'xxx'
#raise SkipTest
#print "test_lean_1"
#pass
#assert 1==2
eq_(6, 7, msg=u"错误") @attr(mode=2)
def test_lean_2():
u'''测试失败'''
try:
print "test_learn_2"
ok_(4==3,msg="xxx")
print sys._getframe().f_code.co_name
except Exception:
print sys._getframe().f_code.co_name @attr(mode=2)
def test_lean_3():
u'''测试成功'''
pass def setUp():
#set_trace()
print "0001 test setUp" def tearDown():
print "0001 test teardown"
使用flaky方法如下:
E:\workspace\nosetest_lear\test_case>nosetests -v test_case_0001.py --with-flaky #带flaky运行,默认运行一次,最后会输出flaky简要报告 E:\workspace\nosetest_lear\test_case>nosetests -v test_case_0001.py --with-flaky --no-flaky-report #没有flaky报告输出 E:\workspace\nosetest_lear\test_case>nosetests -v test_case_0001.py --with-flaky --no-flaky-report --max-runs=3 --min-passes=1 #成功后只运行一次,失败后运行2次
在UI自动化测试中使用flaky插件运行失败用例的更多相关文章
- 【python+selenium自动化】图像识别技术在UI自动化测试中的实际运用
引言: 目前在图像识别方面的自动化测试框架有很多,其中比较有名的是airtest,主要做手机端的游戏自动化测试(http://airtest.netease.com/) 因为没有实际把airtest运 ...
- Web UI自动化测试中绕开验证码登陆方式浅谈
web自动化测试中让测试者感到困惑的是登陆验证码,每次都不一样.现在推荐一种绕开验证码登陆的方式,其实就是将web浏览器获取的登陆cookie加载到程序中就可以了,这样程序就会认为你已经登陆,就可以跳 ...
- python nose测试框架全面介绍十四 --- nose中的只跑上次失败用例
玩过一段时间nose的朋友,一定会发现nose中有一个--failed的功能,官方解释为: --failed Run the tests that failed in the last test ru ...
- JAVA 自定义注解在自动化测试中的使用
在UI自动化测试中,相信很多人都喜欢用所谓的PO模式,其中的P,也就是page的意思,于是乎,在脚本里,或者在其它的page里,会要new很多的page对象,这样很麻烦,前面我们也讲到了注解的使用,很 ...
- UI设计中蕴涵着系统重要的数据结构与功能设计
UI设计中蕴涵着系统重要的数据结构与功能设计 UI设计中的用户需求,事件(用例)驱动
- UI自动化测试(三)对页面中定位到的元素对象做相应操作
前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...
- Vue-cli UI界面中插件和依赖的区别是什么?
Vue-cli UI界面中插件和依赖的区别是什么? 先上结论: 插件在命令行中通过 vue add 安装 如: vue add eslint 这个命令将 @vue/eslint 解析为完整的包名 @v ...
- 弹窗中使用jquery ui的autocomplete自动完成插件无效果 实际是被遮挡了
在普通页面上使用jquery ui的autocomplete自动完成插件时正常显示提供选择的下拉框,但是放到弹窗中的时候就无法显示这个选择的下拉框,其它效果正常: 估计是被弹出窗遮挡了,网络搜索了jq ...
- UI自动化测试:App的WebView页面中,当搜索栏无搜索按钮时处理方法
一.遇到的问题 在做移动端的UI自动化测试时,经常会遇到上图所示的搜索框,这里有个麻烦就是搜索框没有"搜索"按钮,UI自动化测试时不能确认搜索. 要解决这个问题,我们可以通过 dr ...
随机推荐
- Java学习之——泛型
1.概要 generics enable types (classes and interfaces) to be parameters when defining classes, interfac ...
- mongodb 3.2.x 启动 Warning 错误处理
[root@restore1 data1]# mongod --dbpath=/data/data1/mongodb_data/ --directoryperdb ** WARNING: You ar ...
- python 使用循环生成list
#-*- coding:UTF-8 -*- squares=[] for x in range(10): squares.append(x**2) print squares #[0, 1, 4, 9 ...
- 代码记录——phase16,block36(修正后)
加入边缘判定,<2则加2. if (x_upleft<2) x_upleft=x_upleft+2; if (y_upleft<2) y_upleft=y_upleft+2; HRE ...
- symfony 事务提交
1. 添加数据 新建一个对象,给对象赋值 $em = $this->getDoctrine()->getManager(); //添加事物 $em->getConnection()- ...
- mysql中删除binlog的方法?mysql中如何删除binlog?
需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...
- 纯CSS实现瀑布流布局
https://www.w3cplus.com/css/pure-css-create-masonry-layout.html
- Laravel查询构造器简介
数据表 CREATE TABLE IF NOT EXISTS students( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NO ...
- javascript拖拽操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- css counter的使用方法
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...