python nose 自写插件支持用例带进度
在自动化测试过程中,当用例很多且要跑很久时,就会出现这样一个问题,不知道当前跑到第几个用例了,还有多少用例要跑,怎么办?
因为用的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 自写插件支持用例带进度的更多相关文章
- python nose 自写插件打乱class类中用例执行顺序,但将test_a和test_z排除
在使用nose时,有这样一个需求,用例执行打乱,但部分用例因场景原因必须先执行,这类用例在写用例时人为的加上了test_a或test_z字样 网上找了一圈,都没找到合适的方法,只有自己写插件了 已写完 ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- python nose测试框架全面介绍十---用例的跳过
又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...
- python nose测试框架中使用allure_report框架
在使用nose自带的xunit生成xml文件生成测试报告后,领导说报告不够炫,没有百分比效果,且在web自动化时的截图不美观,html很多情况下没有显示图片(nose框架截图方法这里),正好,allu ...
- python nose测试框架全面介绍七--日志相关
引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...
- Python:开发Sublime插件,方便PHP开发
Python:开发Sublime插件,方便PHP开发 背景 最近在学习PHP,开发环境选择了Sublime2,开发过程发现执行PHP程序非常不方便,需要自己在浏览器中输入路径以进行调试,这点不如Dre ...
- python nose测试框架全面介绍六--框架函数别名
之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...
- python nose测试框架全面介绍四
四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...
- 自己动手写插件底层篇—基于jquery移动插件实现
序言 本章作为自己动手写插件的第一篇文章,会尽可能的详细描述一些实现的方式和预备知识的讲解,随着知识点积累的一点点深入,可能到了后期讲解也会有所跳跃.所以,希望知识点不是很扎实的读者或者是初学者,不要 ...
随机推荐
- Vue(二十一)使用express模拟接口数据
1.下载express ... 2.使用vue-cli下载好项目文件 ... 3.找到文件 build - webpack.dev.conf.js 'use strict' const utils = ...
- 通过System.CommandLine快速生成支持命令行的应用
一直以来,当我们想让我们的控制台程序支持命令行启动时,往往需要编写大量代码来实现这一看起来很简单的功能.虽然有一些库可以简化一些操作,但整个过程仍然是一个相当枯燥而乏味的过程.我之前也写过一些文章简单 ...
- Using async-await on .net 4
I'm currently starting to create an application that would profit a lot from C# 5's async-await feat ...
- 记录使用yum安装nginx之后的目录问题
一般来说我们安装nginx的目录都是/usr/local/nginx的,但是用yum安装的目录跟手动安装的不一样,下面是整理的使用yum安装的一些对应目录. nginx执行文件目录:/usr/sbin ...
- .Net转Java.07.IDEA和VS常用操作、快捷键对照表
功能 IDEA 2017.1 快捷键 Visual Studio 2015 快捷键 文档 格式化整个文档 Ctrl+Alt+L Ctrl+E,D 或者 Ctrl+K,D 文件 显示最近的 ...
- [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
转:http://blog.csdn.net/zhengwish/article/details/51602059 通过设置nginx的client_max_body_size解决nginx+php上 ...
- Python学习笔记:Flask-Migrate基于model做upgrade的基本原理
1)flask-migrate的官网:https://flask-migrate.readthedocs.io/en/latest/ 2)获取帮助,在pycharm的控制台中输入 flask d ...
- VS2015 ionic 开发环境配置纪要
1)第一次安装Tools for Apache Cordova不成功,到Options检查依赖项,缺少Node等,重新下载了32为的nodeJs安装.然后运行VS安装程序,卸载Tools for Ap ...
- git主要操作命令
1.创建版本库 (1)初始化一个 Git仓库,使用git init命令 (在相应的本地库目录下执行,将该目录初始化为一个Git库): (2)添加文件到Git仓库,分两步: 第一步,使用命令 git a ...
- 【Linux】Centos下安装ffmpeg
一.准备工作 1.系统环境:CentOS release 6.9 (Final) 2.安装依赖包 yum install -y autoconf automake cmake freetype-dev ...