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"字符串的目录和文件进行测试。例如如下的目录结构:
(图1)
如果我们在C:\PythonTestRoot下运行nosetests,那么nose会自动找到TestUnit1文件夹,然后在找到 Test2.py和TestSomething.py两个文件进行测试,我的两个文件中各有两个方法,一共有四个测试:
(图2)
这样我们可以把所有测试放在一起,然后让测试自己去运行,我们最后看结果就可以了。我们可以指定具体如何输出结果,也可以指定如何搜索文件和文件夹,还可以把测试结果输入到指定的文件,在nosetests后面加上一些命令行参数就可以,参数如何设置在最后面介绍。
三、编写测试
上面说的运行测试其实非常简单,写好测试放到一个文件夹里面,然后在这个文件夹里面执行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的运行信息和调试信息。例如会给出当前正在运行哪个测试。

Python nose test framework 介绍相关推荐

  1. Python Nose 自动化测试框架介绍

    文章目录 1. unittest 简介 1.1 python 单元测试 1.2 unittest 测试框架 1.3 默认模式 1.4 手工模式 2. nose 扩展框架 2.1 `nose` 的安装和 ...

  2. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

    测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...

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

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

  4. Python nose测试大法

    [注明:本文最初发布于简书,然而...] Python作为一门简单易学的编程语言,现在长期位于编程语言榜的前三.在人工智能的第二次浪潮涌起之前,因为简单快速容易维护,Python在很多系统中是作为&q ...

  5. python测试框架nose研究_详解Python nose单元测试框架的安装与使用

    本文介绍了Python nose单元测试框架的安装与使用 ,分享给大家,具体如下: 安装(Python2下安装) pip install nose 原理与命名规则 Nose会自动查找源文件.目录或者包 ...

  6. python用什么来写模块-Python常用模块——模块介绍与导入

    Python常用模块--模块介绍与导入 一.什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分 ...

  7. Robot Framework 介绍

    本文的主要目的是简要地介绍Robot Framework功能和特性,更加详细的内容,请移步至官网http://robotframework.org/ (官网的内容最为全面详细,由英文编写). 本文分为 ...

  8. 十大python开发软件-必看 | 2020年,Python十大应用领域介绍!

    原标题:必看 | 2020年,Python十大应用领域介绍! python作为一门当下极其火爆的编程语言,得到世界范围内无数编程爱好者和开发者喜欢并不是偶然的,除了要比其他编程语言更容易入门,pyth ...

  9. python课程将主要介绍哪些内容-Python课程详细介绍

    渡课 Python 课程开课啦,学Python就来渡课IT 模块一:Python语言部分 课程介绍 介绍Python的诞生,Python有什么独特的特点,它适合用在哪些地方,不适合用在哪些地方,以及P ...

最新文章

  1. shell如何将标准错误输出重定向为标准输出
  2. win 文字转化为语音
  3. spring中getBeansWithAnnotation(Class<? extends Annotation> annotationType)方法
  4. nginx vs. Lighttpd vs. Apache 高效的web server服务器软件比较
  5. Keras .ImageDataGenerator图像增强用法大全以及如何和模型结合起来(有代码)
  6. 《Ruby程序员修炼之道》(第2版)目录—导读
  7. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-线性回归tf.keras概述-02
  8. apache.camel_Apache Camel 2.12 –支持后退,以减少不太积极的轮询路线
  9. 网际控制报文协议ICMP(Internet Control Message Protocol)(详解)
  10. python实现qq登录界面_使用Python编写一个QQ办公版的图形登录界面!
  11. OC中Runtime浅析
  12. 那个抗血栓机器人_美国DJO抗血栓压力袜
  13. 缺失索引自动创建语句
  14. 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员作业考试题库
  15. Python基础之键盘操作
  16. TensorFlow实践四步法
  17. php 下载函数太慢,php的fread函数的一个巨大的坑
  18. 使用mplayer做影片预览图
  19. Synctoy2.1通过计划任务备份文件到网络驱动器注销不生效问题
  20. Linux杀掉挖矿病毒(qW3xT.2)

热门文章

  1. ViewPager VS ViewFilpper
  2. ERP项目实施记录01
  3. 关于VS2005智能设备中无法找到PInvoke DLL问题
  4. TabActivity,LocalActivityManager,TabHost,TabWidget深度分析(二)
  5. Lucene 原理分析之-全文检索的一般过程-笔记
  6. 3年,从工程师到创始人
  7. Data - 信息获取途径汇总
  8. 响应式布局及bootstrap(实例)
  9. LVSHAproxyNginx区别
  10. 安全研究员发现 Yandex 浏览器中的 SSRF 缺陷