在自动化测试过程中,当用例很多且要跑很久时,就会出现这样一个问题,不知道当前跑到第几个用例了,还有多少用例要跑,怎么办?

因为用的nose框架,那就看看nose有没有这样的库支持,结果看了一圈,只找到一个nose-progressive,装完后,有两个问题:

1、不支持windows

2、对接jenkins没法用

傻眼了吧,该怎么解决呢,就得自己写插件了。折腾了两个终于搞定,后需会再总结一个nose plugin接口的说明,这里就不说了。

自己写的插件,效果如下:

root@localhost]# nosetests -v -s test1.py --with-scheduling
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
[/] test1.test_aa ... ok
[/] test1.test_bb ... ok
[/] test1.test_cc ... ok ----------------------------------------------------------------------
Ran tests in .008s OK

用例前面有简陋的进度条提示,正好是我自己的需求,不用太复杂

插件代码如下:

"""Print progress to stdout. Enabled by --with-scheduling"""

from functools import partial
import itertools
import logging
import os
import sys from nose.plugins import Plugin log = logging.getLogger('nose.plugins.nosescheduling') class Progress(Plugin):
name = 'scheduling'
_handler_prefix = 'nose_schedulings_'
#encoding = "UTF-8"
_totalTests = 0 def __init__(self):
super(Progress, self).__init__() # involved the Plugin init
self.test_numbers = itertools.count(1) def options(self, parser, env=os.environ):
super(Progress, self).options(parser, env=env) def configure(self, options, conf):
super(Progress, self).configure(options, conf)
if not self.enabled:
return def prepareTestLoader(self, loader):
def capture_suite(orig_method, *args, **kwargs):
self._totalTests += orig_method(*args, **kwargs).countTestCases()
loader._visitedPaths = set()
return orig_method(*args, **kwargs)
if hasattr(loader, 'loadTestsFromNames'):
loader.loadTestsFromNames = partial(capture_suite,
loader.loadTestsFromNames) def startTest(self, test):
progress = '[{0}/{1}] '.format(next(self.test_numbers), self._totalTests)
sys.stderr.write(progress)

简单几行,把需求搞定。。

有需要的朋友可以通过pip install noseprogress 安装使用

pypi 上的链接如下:https://pypi.org/project/noseprogress/

如果有特别需求也可联系我

python nose 自写插件支持用例带进度的更多相关文章

  1. python nose 自写插件打乱class类中用例执行顺序,但将test_a和test_z排除

    在使用nose时,有这样一个需求,用例执行打乱,但部分用例因场景原因必须先执行,这类用例在写用例时人为的加上了test_a或test_z字样 网上找了一圈,都没找到合适的方法,只有自己写插件了 已写完 ...

  2. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  3. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  4. python nose测试框架中使用allure_report框架

    在使用nose自带的xunit生成xml文件生成测试报告后,领导说报告不够炫,没有百分比效果,且在web自动化时的截图不美观,html很多情况下没有显示图片(nose框架截图方法这里),正好,allu ...

  5. python nose测试框架全面介绍七--日志相关

    引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...

  6. Python:开发Sublime插件,方便PHP开发

    Python:开发Sublime插件,方便PHP开发 背景 最近在学习PHP,开发环境选择了Sublime2,开发过程发现执行PHP程序非常不方便,需要自己在浏览器中输入路径以进行调试,这点不如Dre ...

  7. python nose测试框架全面介绍六--框架函数别名

    之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...

  8. python nose测试框架全面介绍四

    四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...

  9. 自己动手写插件底层篇—基于jquery移动插件实现

    序言 本章作为自己动手写插件的第一篇文章,会尽可能的详细描述一些实现的方式和预备知识的讲解,随着知识点积累的一点点深入,可能到了后期讲解也会有所跳跃.所以,希望知识点不是很扎实的读者或者是初学者,不要 ...

随机推荐

  1. snmpwalk命令

    使用该命令需提前安装好net-snmp*rpm相关包 语法: snmpwalk -v 1或2(代表SNMP版本) -c SNMP读密码 IP地址 OID(对象标示符) (1) -v: 指定snmp的版 ...

  2. 微信小程序-添加手机联系人

    仅供参考 1,wxml: <view bindlongtap="phoneNumTap">{{phoneNum}}</view> 2,js: data = ...

  3. 【容斥】Four-tuples @山东省第九届省赛 F

    时间限制: 10 Sec 内存限制: 128 MB 题目描述 Given l1,r1,l2,r2,l3,r3,l4,r4, please count the number of four-tuples ...

  4. HTML5 学习04—— MathML数学标记

    MathML 元素标签: <math>...</math> MathML 是数学标记语言,是一种基于XML(标准通用标记语言的子集)的标准,用来在互联网上书写数学符号和公式的置 ...

  5. .Net转Java.08.format

    %[index$][标识][最小宽度]转换方式 [index$]可以用于表示对第index个参数进行格式化, // Java代码 String s1=String.format("%3$s, ...

  6. IIS安装、配置 发布网站 报错解决方案

    错误一:   HTTP 错误 500.19- Internal Server Error法请求该页面配置,因为页面的相关配置数据无效####   HTTP 错误 500.21 - Internal S ...

  7. javap 指令集

    栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型 ...

  8. gitlab简单使用教程【转】

    平时一直是用git来管理代码仓库,也用过一段时间github,但是github免费版不能建私有仓库.后来转到了bitbucket,后来被atlassian收购后有点不适应,而且在国内访问经常连不上.还 ...

  9. HTML动画 request animation frame

    在网页中,实现动画无外乎两种方式.1. CSS3 方式,也就是利用浏览器对CSS3 的原生支持实现动画:2. 脚本方式,通过间隔一段时间用JavaScript 来修改页面元素样式来实现动画.接下来我们 ...

  10. linux下安装EJBCA 搭建私有CA服务器

    linux下安装EJBCA 搭建私有CA服务器 EJBCA是一个全功能的JAVA的CA系统软件,我们可以用此搭建私有CA服务器: 一:首先我的测试环境: 1.  linux mint18.3 62位: ...