使用python的nose模块进行测试
2012-11-02 16:42
162 查看
一、安装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.选择测试文档
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.toolsimport 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的运行信息和调试信息。例如会给出当前正在运行哪个测试。
先用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.选择测试文档
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():
"function setup"
def tearDown():
"function teardown"
def Testfunc1():
"Testfunc1"
assert True
def Testfunc2():
"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.toolsimport 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模块进行测试
- 使用python的nose模块进行测试
- 使用Python的Treq on Twisted来进行HTTP压力测试
- 使用appium+python对android进行自动化测试
- 使用Python进行自动化测试
- 使用python 进行api 接口测试
- 使用Python进行自动化测试
- 目前大家对Python都有一个共识,就是他对测试非常有用,自动化测试里Python用途也很广,但是Python到底怎么进行自动化测试呢?今天就简单的向大家介绍一下怎么使用Python进行自动化测试
- 使用 Python 标准库进行性能测试
- 详细介绍windows下使用python pylot进行网站压力测试
- 使用python进行windows自动化测试
- 使用Python进行Android自动化测试
- 使用Python进行代码测试
- 使用caffe的Python接口进行训练测试
- 详细介绍windows下使用python pylot进行网站压力测试
- 使用python-selenium grid进行分布式测试
- python (1):使用python 进行api 接口测试
- 使用python+requests对接口进行测试
- 使用python对网站进行测试(模拟用户行为)
- 使用nose 进行Python项目的自动化测试