`
xiaolin0199
  • 浏览: 573221 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]Python nose test framework 介绍

阅读更多

一、安装nose

  先用easy_install 安装 nose,easy_install是一个很好的python工具,可以方便安装很多的python程序。可以去http://pypi.python.org/pypi/setuptools了解一下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"字符串的目录和文件进行测试。例如如下的目录结构:

 

   如果我们在C:\PythonTestRoot下运行nosetests,那么nose会自动找到TestUnit1文件夹,然后在找到 Test2.py和TestSomething.py两个文件进行测试,我的两个文件中各有两个方法,一共有四个测试:

 

    这样我们可以把所有测试放在一起,然后让测试自己去运行,我们最后看结果就可以了。我们可以指定具体如何输出结果,也可以指定如何搜索文件和文件夹,还可以把测试结果输入到指定的文件,在nosetests后面加上一些命令行参数就可以,参数如何设置在最后面介绍。

三、编写测试
  上面说的运行测试其实非常简单,写好测试放到一个文件夹里面,然后在这个文件夹里面执行nosetests就可以了。编写测试也非常简单:
 
  a)简单的测试

======================= 
#### file: test.py ####
=======================
def Testfunc():
    a = 1
    b = 2
    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函数,可以如下处理:

 def setUp():
     print "function setup"
 
 def tearDown():
     print "function teardown"
 
 def func1Start():
     print "func1 start"
 
 def func1End():
     print "func1 end"
 
 def func2Start():
     print "func2 start"
 
 def func2End():
     print "func2 end"
     
 def Testfunc1():
     print "Testfunc1"
     assert True
 
 def Testfunc2():
     print "Testfunc2"
     assert True
 
 Testfunc1.setup = func1Start
 Testfunc1.tearDown = func1End
 Testfunc2.setup = func2Start
 Testfunc2.tearDown = func2End
   注意最后面的四行,分别指定了Testfunc1和Testfun2的setup和teardown函数。

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

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



  上面的代码也可以换一种写法如下,注意记得 import with_setup:
 from nose.tools import with_setup
 
 def setUp():
     print "function setup"
 
 def tearDown():
     print "function teardown"
     
 
 def func1Start():
     print "func1 start"
 
 def func1End():
     print "func1 end"
 
 def func2Start():
     print "func2 start"
  
 def func2End():
     print "func2 end"
 
 
 @with_setup(func1Start, func1End)
 def Testfunc1():
     print "Testfunc1"
     assert True
 
 @with_setup(func2Start, func2End)
 def Testfunc2():
     print "Testfunc2"
     assert True

    d)测试类的的setUp和tearDown

  看如下的代码:

 class TestClass():
     arr1 = 2
     arr2 = 2
     
     def setUp(self):
         self.arr1 = 1
         self.arr2 = 3
         print "MyTestClass setup"
 
     def tearDown(self):
         print "MyTestClass teardown"
         
     def Testfunc1(self):
         assert self.arr1 == self.arr2
     
     def Testfunc2(self):
         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的运行信息和调试信息。例如会给出当前正在运行哪个测试。
分享到:
评论
1 楼 way_testlife 2010-07-25  
不错,学习了~

相关推荐

    Python Unit Test Automation:for Python Developers and Testers

    Quickly learn how to automate unit testing of Python 3 code with Python 3 automation libraries, such as doctest, unittest, nose, nose2, and pytest. This book explores the important concepts in ...

    python_test.tgz

    Python提供了内置的`unittest`模块,用于编写和运行测试用例,此外还有许多第三方测试框架,如`pytest`和`nose`,它们提供了更丰富的功能和便利性。 "python_test"可能是一个包含了各种测试脚本的目录,每个脚本...

    Amber Python Test.zip

    标题中的"Amber Python Test.zip"表明这是一个使用Python语言进行测试的项目,被压缩成一个ZIP文件以便存储和传输。ZIP是一种常见的文件归档格式,它允许用户将多个文件和目录打包成一个单一的文件,方便管理和分享...

    nose Documentation Release 1.2.1

    标签“python nose test 测试”强调了文档的核心内容,即nose是一个Python语言的测试工具,适合于编写测试用例并进行自动化测试。 从提供的部分文档内容中,我们可以提取出以下知识点: 1. 安装nose 文档介绍了在...

    Python Nose框架编写测试用例方法

    1. 关于Nose nose项目是于2005年发布的,也就是 py.test改名后的一年。它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和...本文主要介绍nose框架编写自动化测试用例的方法。

    Test-.Driven.Python.Development.1783987928

    Title: Test- Driven Python Development Author: Siddharta Govindaraj Length: 300 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-03-31 ISBN-10: 1783987928 ISBN-13:...

    python27-python-nose-1.3.0-2.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Python库 | nose2-test-timer-0.0.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:nose2-test-timer-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | paratest-python-nose-0.0.1.tar.gz

    使用paratest时,开发者可以通过命令行调用其提供的工具,如`python setup.py test`或直接使用`paratest`命令。这个工具会识别项目中的nose测试,并根据指定的参数(如进程数量)并行运行它们。这不仅提高了测试效率...

    Robot Framework 源代码阅读笔记 之 一 - CSDN博客

    本文还涉及了多种Python测试库的整理与介绍,这些库涵盖WebUI测试、性能测试、移动端测试、接口测试等多个方面。 首先,作者提到了Robot Framework的一些基础测试库,如selenium-webUI自动化测试、splinter-webUI...

    python-nose-1.3.7-1.el7.noarch.rpm

    离线安装包,亲测可用

    Python库 | nose2-0.4.7.tar.gz

    Python库nose2是Python开发中的一个测试框架,它的出现是为了提供对unittest模块的扩展和增强,以提高测试的灵活性和可配置性。nose2致力于简化测试代码编写,使得测试更加自动化,同时具备更好的可读性和可维护性。...

    详解Python nose单元测试框架的安装与使用

    Python的nose单元测试框架是Python开发者常用的自动化测试工具,它极大地简化了测试代码的编写和执行过程。本文将深入探讨nose的安装、基本原理、命名规则、使用方法,以及如何利用nose进行测试方法的参数化和生成...

    Python库 | nose2-0.7.0.tar.gz

    **Python库nose2-0.7.0详解** 在Python的世界里,测试框架是确保代码质量、可维护性和可扩展性的重要工具。nose2是Python的一个测试框架,它是nose测试框架的后续版本,提供了更加现代和灵活的测试解决方案。nose2-...

    python-nose-1.3.7-7.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    python-unit-test-tool-comparison:比较Python unittest,nose和py.test

    $ python test_unittest.py F... ====================================================================== FAIL: test_failing (__main__.TestCompare) --------------------------------------------------------...

Global site tag (gtag.js) - Google Analytics