python nose测试框架全面介绍二

二、基本使用

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

0002 test setUp
test_case.test_case_0002.test_learn_3 ... test_lean_3
0002 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
0002 test teardown
ok
0002 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只会执行一次,分别是开始及结束

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 4 tests in 0.026s

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

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 4 tests in 0.026s

OK

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

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 8 tests in 0.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 9 tests in 0.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 3 tests in 0.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 1 test in 0.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 2 tests in 0.004s

OK
时间: 2024-10-06 13:33:49

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

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

引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的报告只有错误提示,没有日志,查看nose的官网,nose默认支持将日志显示的,如下: 脚本如下: #coding:utf-8 ''' Created on 2016年6月22日 @author: huzq ''' import logging from test_case import new fr

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

又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的SkipTest典型应用  应用一: ''' @auth:hu ''' from nose.plugins.skip import SkipTest @attr(mode=1) def test_learn_1(): raise SkipTest 但这种SkipTest在实际的日志中没有显示Skip关

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

之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.package中写在__init__.py中的函数 setup_package 用setup, setUp, or setUpPackage也可以 teardown_package 用teardown, tearDown, or tearDownPackage也可以 2.函数形式组成的用例 setup_

python nose测试框架全面介绍一

一.简介      nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install nose pip install nose 对于python怎么安装easy_install或pip工具,这里不介绍,网上很多教程. 如果你没有安装easy_install或pip工具,你可以去官网上下载安装包,然后解压,并cd进放解压的目录,然后输入以下代码: python setup.py i

python nose测试框架全面介绍三

三.nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间.异常输出及unittest框架中所有的assert功能. 为了使写用例更加容易,nose.tools提供了部分便利的功能函数,下面写几个常用的,如下: nose.tools.ok_(expr, msg=None) 标准的assert,例子如下: from nose.tools import eq_ def test_lean_2(): print "test_learn_2" ok_(4==3,m

python nose测试框架全面介绍四

四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_download(): import urllib # commence slowness... test_big_download.slow = 1 在运行时,用下面方式来执行: $ nosetests -a '!slow' 这种方式不太好用,另一种方式更简单 from nose.plugins.at

python nose测试框架全面介绍八---接口测试中非法参数的断言

在测接口时,会有这样的场景,输入非法的参数,校验返回的错误码及错误内容 通常做法为发请求,将错误的返回结果拿出,再进行对比匹配:但存在一个问题,需要再写错误返回分析函数,不能与之前正常发请求的函数共用. 这时,我们可以用上assertRaises.assertRaisesRegexp:python 2.7中unittest中叫assertRaises,nose.tools中叫assert_raises.assert_raises_regexp 一.unittest中的assertRaises 看

Jenkins自动化构建python nose测试

简介 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本). 创建节点 1. 登录jenkins平台,在左侧的节点中随便找一个节点点进去,然后在导航栏点击“nodes”-->点击“创建节点”-->输入“节点名称”-->选择“Permanent Agent”-->点击“OK”: 2. 指定jenkins的工作目录,随便指定-->点击“

接口自动化:Jenkins 自动构建python+nose测试

参考: http://www.cnblogs.com/LanTianYou/p/6559916.html#_label1 http://blog.csdn.net/limm33/article/details/51191263 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本) 1,创建节点: jenkins->系统管理->管理节点->新增节