博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用python的nose模块进行测试
阅读量:4625 次
发布时间:2019-06-09

本文共 3723 字,大约阅读时间需要 12 分钟。

一、安装nose

  先用easy_install 安装 nose,easy_install是一个很好的python工具,可以方便安装很多的python程序。可以去了解一下easy_install。如果懒得去看的,可以直接从下载安装文件进行安装就可以了,注意,这个链接是windows 32位的安装包。

  安装完easy_install后,在相应版本的Scripts目录下(例如C:/Python26/Scripts)会有一个easy_install.exe程序,通过这个就可以安装了。在命令行下转到Python的Scripts目录下,执行以下的命令进行安装:

  C:/Python26/Scripts/easy_install nose

  上面的 C:/Python26/Scripts 需要根据您的Python的安装路径进行修改。
  安完毕后,在
C:/Python26/Scripts 下会有一个nosetests.exe文件,通过这个exe程序就可以在命令行下运行测试了。最好是把
C:/Python26/Scripts 加入环境变量,这样在其它目录中可以直接引用nosetests.exe。
 
二、运行测试
  在命令行下,直接运行nosetests(注意要把nosetests.exe所在的目录加入到环境变量Path里面),它就会自动查找当前目录下包含"Test"字符串的目录和文件进行测试。
       1.选择测试文档
           nosetests xxx.py
        2.选择函数名
           nosetests xxx.py:test_function
        3.选择类的方法
           nosetests xxx.py:TestCase.test_method
三、编写测试
  上面说的运行测试其实非常简单,写好测试放到一个文件夹里面,然后在这个文件夹里面执行nosetests就可以了。编写测试也非常简单:
 
  a)简单的测试
=======================
#### file: test.py ####
=======================
1 def
Testfunc():
2
    a
=
1
3
    b
=
2
4
    assert
a
==
b
  把上面的文件保存到一个目录下,然后在该目录下在命令行里执行nosetests就可以运行测试了。

  b)模块的setUp和tearDown

def
setUp():
   
print
" function setup "
def
tearDown():
   
print
" function teardown "
   
def
Testfunc1():
   
print
" Testfunc1 "
   
assert
True
def
Testfunc2():
   
print
" Testfunc2 "
   
assert
True

  nose在文件中如果找到函数setup, setup_module, setUp 或者setUpModule等,那么会在该模块的所有测试执行之前执行该函数。如果找到函数 teardown,tearDown, teardown_module或者 tearDownModule 等,那么会在该模块所有的测试执行完之后执行该函数。

  对于上面的代码,nose实际的执行过程是这样的:

  setUp()->Testfunc1()->Testfunc2()->tearDown()

  c)测试函数的setUp和tearDown

  可能会想给每个函数单独指定类似的setUp和tearDown函数,可以如下处理:

1 def
setUp():
2
    print
" function setup "
3
4 def
tearDown():
5
    print
" function teardown "
6
7 def
func1Start():
8
    print
" func1 start "
9
10 def
func1End():
11
    print
" func1 end "
12
13 def
func2Start():
14
    print
" func2 start "
15
16 def
func2End():
17
    print
" func2 end "
18
   
19 def
Testfunc1():
20
    print
" Testfunc1 "
21
    assert
True
22
23 def
Testfunc2():
24
    print
" Testfunc2 "
25
    assert
True
26
27
Testfunc1.setup
=
func1Start
28
Testfunc1.tearDown
=
func1End
29
Testfunc2.setup
=
func2Start
30
Testfunc2.tearDown
=
func2End

  注意最后面的四行,分别指定了Testfunc1和Testfun2的setup和teardown函数。

  nose对上面代码的具体执行顺序如下:

  setUp()->func1Start()->Testfunc1()->func1End()->func2Start()->Testfunc2()->func2End()->tearDown()

  上面的代码也可以换一种写法如下,注意记得 import with_setup:

1 from
nose.tools import
with_setup
2
3 def
setUp():
4
    print
" function setup "
5
6 def
tearDown():
7
    print
" function teardown "
8
   
9
10 def
func1Start():
11
    print
" func1 start "
12
13 def
func1End():
14
    print
" func1 end "
15
16 def
func2Start():
17
    print
" func2 start "
18
19 def
func2End():
20
    print
" func2 end "
21
22
23
@with_setup(func1Start, func1End)
24 def
Testfunc1():
25
    print
" Testfunc1 "
26
    assert
True
27
28
@with_setup(func2Start, func2End)
29 def
Testfunc2():
30
    print
" Testfunc2 "
31
    assert
True

  d)测试类的的setUp和tearDown

  看如下的代码:

1 class
TestClass():
2
    arr1
=
2
3
    arr2
=
2
4
   
5
    def
setUp(self):
6
        self.arr1
=
1
7
        self.arr2
=
3
8
        print
" MyTestClass setup "
9
10
    def
tearDown(self):
11
        print
" MyTestClass teardown "
12
       
13
    def
Testfunc1(self):
14
        assert
self.arr1
==
self.arr2
15
   
16
    def
Testfunc2(self):
17
        assert
self.arr1
==
2

  这里nose会对每个类的测试方法单独创建类的实例,并且有单独的setUp和tearDown。nose对上面测试的顺序如下:

  setUp()->Testfunc1()->TearDown()->setUp()->Testfunc2()->TearDown()

  e)package的setUp和tearDown

  package的setUp和tearDown方法需要放在__init__.py这个文件中,整个package只执行一次setUp和一次tearDown。

四、nosetest常用的命令行参数

  这里只重点介绍几个常用的,其它的参数可以通过nosetests -h进行查看。

  a) -w ,指定一个目录运行测试。目录可以是相对路径或绝对路径。

  例如: nosetest -w c:/pythonTests/Test1,只运行目录c:/pythonTests/Test1下的测试。可以指定多个目录,例如: nosetest -w c:/pythonTests/Test1 -w c:/pythonTests/Test2。

  b)-s,不捕获输出,会让你的程序里面的一些命令行上的输出显示出来。例如print所输出的内容。

  c)-v,查看nose的运行信息和调试信息。例如会给出当前正在运行哪个测试。

转载于:https://www.cnblogs.com/chenjianhong/archive/2012/11/02/4144896.html

你可能感兴趣的文章
C#/java 执行oracle package
查看>>
程序面试试题
查看>>
Wall POJ - 1113 凸包模板
查看>>
leetcode算法: Find Bottom Left Tree Value
查看>>
python opencv3 grabcut前景检测
查看>>
内容安全策略(CSP)_防御_XSS_攻击的好助手
查看>>
获取URL中的参数
查看>>
宝塔面板安装swoole扩展
查看>>
HDOJ_1061_Rightmost Digit
查看>>
【小笨鸟看JDK1.7集合源码之三】LinkedList源码剖析
查看>>
bfs,dfs区别
查看>>
Javascript端加密java服务端解密
查看>>
xml文件中引号如何处理
查看>>
Centos 下 Jenkins2.6 + Git + Maven Shell一件部署与备份
查看>>
MVC原理
查看>>
Java中堆内存和栈内存详解
查看>>
网络编程
查看>>
C# 访问USB(HID)设备方法 (转)
查看>>
linux 配置svn服务器+使用+注意事项
查看>>
关于JAVA并发编程你需要知道的——语言篇
查看>>