二、基本使用

nosetest脚本的使用(在安装完nose之后)

nosetests [options] [(optional) test files or directories]

我们可以使用配置文件,将需要运行的参数放入,配置文件的文件名为nose.cfg中,是标准的配置文件格式,如下:

[nosetests]
verbosity=3
with-doctest=1

有部分参数可以不使用或禁用,你可以将配置放入配置文件中,但必须在系统中建立一个环境变量,名字为 NOSE_IGNORE_CONFIG_FILES

除了上面的运行方式,还有以下的途径使用nose

在python脚本中直接使用,如:

import nose
nose.main()

如果你不想使用unittest框架测试结束时这种显示方式,可以在脚本中使用以下方式:

import nose
result = nose.run()

说了这么多,可能还是没看明白,下面来几个实例,

在nose中,测试用例可以以函数的形式来组织,下面分别来演示下,

1、以函数形式写的测试用例

#coding:utf-8
'''
Created on 2015年6月22日
@author:
'''
import logging log = logging.getLogger(__name__) def test_learn_3():
print("test_lean_3")
pass def test_lean_4():
print("test_learn_2") def test_lean_5():
print("test_learn_5")
def setUp():
print "0002 test setUp" def tearDown():
print "0002 test teardown" test_learn_3.teardown=test_lean_5.teardown= tearDown

运行的结果如下:

E:\workspace\nosetest_lear>nosetests -v -s test_case.test_case_0002

 test setUp
test_case.test_case_0002.test_learn_3 ... test_lean_3
test teardown
ok
test_case.test_case_0002.test_lean_4 ... test_learn_2
ok
test_case.test_case_0002.test_lean_5 ... test_learn_5
test teardown
ok
test teardown

这里加了一句

test_learn_3.teardown=test_lean_5.teardown= tearDown,说明在运行完成后就执行tearDown操作

所以这里运行顺序为:setUp-->test_learn_3-->tearDown-->test_learn_3-->test_learn_4-->tearDown-->tearDown

因次,在函数或者函数式的用例组织中,setUp和tearDown只会执行一次,分别是开始及结束,注意:必须要用@classmethod装饰器标识

2、以类的形式组织的用例:

'''

@author: huzq
'''
class TestClass(): def setUp(self):
print "MyTestClass setup" def tearDown(self):
print "MyTestClass teardown" def Testfunc1(self):
print "this is Testfunc1"
pass def test_func1(self):
print "this is test_func1"
pass def Testfunc2(self):
print "this is Testfunc2"
pass def test_func2(self):
print "this is test_func2"
pass

运行结果:

E:\workspace\nosetest_lear>nosetests -v -s test_case.test_case_0003
test_case.test_case_0003.TestClass.Testfunc1 ... MyTestClass setup
this is Testfunc1
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.Testfunc2 ... MyTestClass setup
this is Testfunc2
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.test_func1 ... MyTestClass setup
this is test_func1
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.test_func2 ... MyTestClass setup
this is test_func2
MyTestClass teardown
ok ----------------------------------------------------------------------
Ran tests in .026s

从运行结果中可以看出,每个用例都会分别执行setUp及tearDown,但是与unittest一样,在类中的测试用例顺序变更了,由字母排序了。

注:在以类形式运行时,还有setUpClass及tearDownClass两个函数功能,是运行测试时,只运行一次。

3、以整个包的形式运行


我们创建python package时会自动生成__init__.py文件,我们将setUp或tearDown写入时,会在每个文件执行时都执行setUp和tearDown,如下

文件内容为:

def setUp():
print "ALL starting..."

然后再次执行以类的文件,结果如下:

E:\workspace\nosetest_lear>nosetests -v -s test_case.test_case_0003
ALL starting...
test_case.test_case_0003.TestClass.Testfunc1 ... MyTestClass setup
this is Testfunc1
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.Testfunc2 ... MyTestClass setup
this is Testfunc2
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.test_func1 ... MyTestClass setup
this is test_func1
MyTestClass teardown
ok
test_case.test_case_0003.TestClass.test_func2 ... MyTestClass setup
this is test_func2
MyTestClass teardown
ok ----------------------------------------------------------------------
Ran tests in .026s OK

从结果中可以看出,在执行前执行了__init__.py中的setUp函数

with_setup修饰器的使用,nose支持在每个用例前使用with_setup来自定义测试用例的setUp及tearDown功能,如下:

def setup_func():
"set up test fixtures" def teardown_func():
"tear down test fixtures" @with_setup(setup_func, teardown_func)
def test():
"test ..."

也可以单独定义setup或tearDown,写法就必须如下:

test.setup = setup_func
test.teardown = teardown_func

4、多个文件时nose的执行

如下图,建立了多个py文件

再次运行大的文件,查看运行结果:

E:\workspace\nosetest_lear>nosetests -v  test_case
test_case.test_case_0001.test_lean_2 ... ok
test_case.test_case_0002.test_learn_3 ... ok
test_case.test_case_0002.test_lean_4 ... ok
test_case.test_case_0002.test_lean_5 ... ok
test_case.test_case_0003.TestClass.Testfunc1 ... ok
test_case.test_case_0003.TestClass.Testfunc2 ... ok
test_case.test_case_0003.TestClass.test_func1 ... ok
test_case.test_case_0003.TestClass.test_func2 ... ok ----------------------------------------------------------------------
Ran tests in .022s OK

从结果中,可以看出,文件名是按相应的字母排序,但文件里的用例根据函数式及类式不同而不一样。

 5、nose运行方式

如前文中提到的一样,nose可以直接放在脚本里面运行,但不建议这样方法,更建议的是通过命令行的方式,对以后的持续集成有好处。

直接运行整个包:

E:\workspace\nosetest_lear>nosetests -v test_case
test_case.test_case_0000.test_learn_3 ... ok
test_case.test_case_0001.test_lean_2 ... ok
test_case.test_case_0002.test_learn_3 ... ok
test_case.test_case_0002.test_lean_4 ... ok
test_case.test_case_0002.test_lean_5 ... ok
test_case.test_case_0003.TestClass.Testfunc1 ... ok
test_case.test_case_0003.TestClass.Testfunc2 ... ok
test_case.test_case_0003.TestClass.test_func1 ... ok
test_case.test_case_0003.TestClass.test_func2 ... ok ----------------------------------------------------------------------
Ran tests in .020s OK

运行某一个模块:

E:\workspace\nosetest_lear>nosetests -v test_case.test_case_0002
test_case.test_case_0002.test_learn_3 ... ok
test_case.test_case_0002.test_lean_4 ... ok
test_case.test_case_0002.test_lean_5 ... ok ----------------------------------------------------------------------
Ran tests in .007s OK

运行某一个用例:

E:\workspace\nosetest_lear>nosetests -v test_case.test_case_0002:test_lean_4
test_case.test_case_0002.test_lean_4 ... ok ----------------------------------------------------------------------
Ran test in .003s OK

运行不同模块下不同用例:

E:\workspace\nosetest_lear>nosetests -v --tests=test_case.test_case_0002:test_lean_4,test_case.test_case_0001:test_lean_2
test_case.test_case_0002.test_lean_4 ... ok
test_case.test_case_0001.test_lean_2 ... ok ----------------------------------------------------------------------
Ran tests in .004s OK

python nose测试框架全面介绍二的更多相关文章

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

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

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

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

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

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

  4. python nose测试框架全面介绍五--attr介绍

    之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...

  5. python nose测试框架全面介绍一

    一.简介      nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install ...

  6. python nose测试框架全面介绍十二 ----用例执行顺序打乱

    在实际执行自动化测试时,发现我们的用例在使用同一个资源的操作时,用例的执行顺序对测试结果有影响,在手工测试时是完全没法覆盖的. 但每一次都是按用例名字来执行,怎么打乱来执行的. 在网上看到一个有意思的 ...

  7. python nose测试框架全面介绍十一---用例的发现

    nose是怎么发现用例的??网上一大把说函数以test开头的都会自动发现,真的是这样吗???还是自己来试验下吧 首先,我们还是来看看官方文档怎么说的吧: If it looks like a test ...

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

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

  9. python nose测试框架全面介绍三

    三.nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间.异常输出及unittest框架中所有的assert功能. 为了使写用例更加容易,nose.tools提供了部分 ...

随机推荐

  1. textarea标签内容为(英文或数字不自动换行)的解决方法

    textarea 显示一串英文时不会发生换行. 以下是两种解决方法:1.限制textarea的大小 width 设置为 00px (不要设置为00%)cols  设置为 30+ (也有类似效果) 2. ...

  2. MyBatis的深入原理分析之1-架构设计以及实例分析

    MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例, ...

  3. koa2使用阿里云oss的nodejs sdk实现上传图片

    nodejs实现上传图片到阿里云,自然是写成接口形式比较方便,前端监听input file的改变,把file对象传入到formData中传入后端,不能直接传入file对象,后端需要接受formData ...

  4. Innodb表压缩过程中遇到的坑(innodb_file_format)

    https://www.cnblogs.com/billyxp/p/3342969.html

  5. SpringMVC由浅入深day01_1springmvc框架介绍

    springmvc 第一天 springmvc的基础知识 课程安排: 第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处 ...

  6. 诡异的DataTime.Now.ToString()

    昨天晚上调程序的时候在服务器上出现这种问题 DataTime.Now.ToString("yyyy-MM-dd HH:mm:ss") 居然出现了2014-8-14 8:nn:14: ...

  7. ios开发之--编码及命名规范

    做了几年的开发工作,因为是半路出的家,所以对这块一直都没怎么重视,所以在工作中,出现了很多的尴尬场景,编码和命名的规范是一定得有的,最起码一个团队之间的规范也是很有必要的.面向对象的编程,其实很好理解 ...

  8. PHP代码审计笔记--任意文件下载漏洞

    在文件下载操作中,文件名及路径由客户端传入的参数控制,并且未进行有效的过滤,导致用户可恶意下载任意文件.  0x01 客户端下载 常见于系统中存在文件(附件/文档等资源)下载的地方. 漏洞示例代码: ...

  9. YUV格式学习笔记

    YUV与RGB表现图像的方法不同,其采用的是一个亮度信号加两个色差信号的方式来表现图像.其中UV表示的是CbCr,常见的YUV格式有:YUV4:2:0,YUV4:2:2,YUV4:1:1,YUV4:4 ...

  10. zabbix的启动和关闭脚本

    1. zabbix客户端的系统服务脚本 1.1 拷贝启动脚本 zabbix的源码提供了系统服务脚本,在/usr/local/src/zabbix-3.2.6/misc/init.d目录下,我的系统是C ...