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

因为用的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. 关于js的函数

    1.获取内容的兼容函数 /* * 一: 获取内容的兼容函数 * setText(obj, str) * 思路: * 1.首先判断浏览器: * 2.如果是IE浏览器,就用innerText: * 3.如 ...

  2. 转 Configuring Relationships with the Fluent API

    http://msdn.microsoft.com/zh-cn/data/jj591620 Configuring a Required-to-Optional Relationship (One-t ...

  3. macOS Sierra WiFi connecting problem

    吐槽一下,苹果的质量管控越来越差了. macOS Sierra有时突然或升级后会遇到wifi不停重连连不上问题,现象为不停地连接wifi. 网上有人说删除 /Library/Preferences/S ...

  4. ssh以root用户远程登录失败

    参考文献: http://blog.csdn.net/lichangzai/article/details/39379153 http://blog.csdn.net/yasi_xi/article/ ...

  5. C# RabbitMQ延迟队列功能实战项目演练

    一.需求背景 当用户在商城上进行下单支付,我们假设如果8小时没有进行支付,那么就后台自动对该笔交易的状态修改为订单关闭取消,同时给用户发送一份邮件提醒.那么我们应用程序如何实现这样的需求场景呢?在之前 ...

  6. C# IOThread

    在看微软的ASP.NET - 将 ASP.NET 用作高性能文件下载器 示例里面用到了IO 线程,以前打算自己撸的,这里贴出来 已标记一下: ///////////////////////////// ...

  7. 【JVM】垃圾收集器

    程序计数器.Java虚拟机栈.本地方法栈分配的内存是确定的,生命周期与线程同样.所以不须要过多考虑回收问题. 而Java堆和方法区仅仅有运行时才知道有哪些对象被创建,须要多少内存,这部分的内存分配和回 ...

  8. 新版本的bettercap不好用, 如何安装和编译旧版本的bettercap

    新版本的bettercap2.0以上是用go语言写的, 各种功能感觉还不太完善, 没有原来的用ruby写的好, 想着回退安装bettercap1.6旧版本 系统环境: kali 2017.2 下载源码 ...

  9. 关联规则挖掘算法之Apriori算法

    Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集. 关于这个算法有一个非常有名的故事:"尿布和啤酒".故事是 ...

  10. java mqtt

    代码: package cc.gongchang.mqtt; import java.net.URISyntaxException; import org.fusesource.hawtdispatc ...