Python的学习(十八)---- 单元测试工具nose
转自http://blog.csdn.net/zbyufei/article/details/6574213
一、安装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
在命令行下,直接运行nosetests(注意要把nosetests.exe所在的目录加入到环境变量Path里面),它就会自动查找当前目录下包含"Test"字符串的目录和文件进行测试
这样我们可以把所有测试case放在一起,然后让测试自己去运行,我们最后看结果就可以了。我们可以指定具体如何输出结果,也可以指定如何搜索文件和文件夹,还可以把测试结果输入到指定的文件。
三、编写测试
a)简单的测试
=======================
#### file: test.py ####
=======================def Testfunc():a = 1b = 2assert a == b
把上面的文件保存到一个目录下,然后在该目录下在命令行里执行nosetests就可以运行测试了。
b)模块的setUp和tearDown
def setUp():print "function setup"def tearDown():print "function teardown"def Testfunc1():print "Testfunc1"assert Truedef 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 Truedef Testfunc2():print "Testfunc2"assert TrueTestfunc1.setup = func1StartTestfunc1.tearDown = func1EndTestfunc2.setup = func2StartTestfunc2.tearDown = func2End
注意最后面的四行,分别指定了Testfunc1和Testfun2的setup和teardown函数。
nose对上面代码的具体执行顺序如下:
setUp()->func1Start()->Testfunc1()->func1End()->func2Start()->Testfunc2()->func2End()->tearDown()
d)测试类的的setUp和tearDown
看如下的代码:
class TestClass():arr1 = 2arr2 = 2def setUp(self):self.arr1 = 1self.arr2 = 3print "MyTestClass setup"def tearDown(self):print "MyTestClass teardown"def Testfunc1(self):assert self.arr1 == self.arr2def 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的运行信息和调试信息。例如会给出当前正在运行哪个测试。
Python的学习(十八)---- 单元测试工具nose相关推荐
- python图片-Python中的十大图像处理工具
原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...
- PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization
PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...
- PyTorch框架学习十五——可视化工具TensorBoard
PyTorch框架学习十五--可视化工具TensorBoard 一.TensorBoard简介 二.TensorBoard安装及测试 三.TensorBoard的使用 1.add_scalar() 2 ...
- Python的学习(十六):对文件的操作
Python的学习(十六):对文件的操作 编码格式的介绍 Python中的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 如何修改文件格式?不写的话默认为UTF-8 ...
- C1认证学习十八、十九(表单元素、转义字符)
C1认证学习十八.十九(表单元素.语义化标签) 十八 任务背景 HTML的表单用于收集用户的输入,表单元素是指的不同类型的input元素,复选框,单选按钮,提交按钮等等. 任务目标 掌握表单标签以及其 ...
- [Python人工智能] 二十八.Keras深度学习中文文本分类万字总结(CNN、TextCNN、LSTM、BiLSTM、BiLSTM+Attention)
从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了BiLSTM-CRF模型搭建及训练.预测,最终实现医学命名实体识别实验.这篇文章将详细讲解Keras实现经典 ...
- python dlib学习(八):训练人脸特征点检测器
前言 前面的博客(python dlib学习(二):人脸特征点标定)介绍了使用dlib识别68个人脸特征点,但是当时使用的是dlib官方给出的训练好的模型,这次要自己训练一个特征点检测器出来.当然,想 ...
- Python深度学习十大核心算法!
深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...
- 大数据分析十八般工具
大数据分析是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理.该数据集通常是万亿或EB的大小.这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如 ...
最新文章
- 分享2020 几个好用的ip地址归属地查询
- 多模态理论张德禄_观点 | 多模态研究:认知语言学的新方法
- php 根据权重随机数,PHP根据概率产生随机数
- 我9月底的SAP Spartacus开发进展情况
- [转] java.nio.ByteBuffer中flip、rewind、clear方法的区别
- ES6对于数组的扩展
- SpringMVC的响应数据和结果视图
- IE和火狐读取XML方法比较
- Oracle 禁止操作系统认证登录
- 模型保存的方法-----仅保存权重
- 翻译:SET PASSWORD语句(已提交到MariaDB官方手册)
- 基于C++实现的运动会统分系统
- 上古卷轴5:重制版AFT管理随从导致瑟拉娜Serana有关的MOD眼睛变金色的问题解决
- 怎样快速实现两台电脑硬盘文件共享?
- c# datetime._C#| DateTime.TimeOfDay属性(带示例)
- 四五百蓝牙耳机哪个好?500元以内音质最好的蓝牙耳机
- Codeforces 854 B Maxim Buys an Apartment
- SQL语句创建、修改视图的方法
- Linux Shell操作json工具jq
- oracle修复工具下载,Oracle数据库恢复工具DataNumen Oracle Recovery