nose的setup和teardown

参考:http://blog.csdn.net/linda1000/article/details/8533349

1、模块的setUp和tearDown

 1     def setUp():  
 2         print "function setup"  
 3       
 4     def tearDown():  
 5         print "function teardown"  
 6           
 7     def Testfunc1():  
 8         print "Testfunc1"  
 9         assert True  
10       
11     def Testfunc2():  
12         print "Testfunc2"  
13         assert True  

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

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

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

2、测试函数的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()

3、测试类的的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()

4、package的setUp和tearDown

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

  可以在__init__.py中定义,setup方法名可以是setup, setup_package, setUp, or setUpPackage,而teardown方法名可以是teardown, teardown_package, tearDown or tearDownPackage。比如定义数据库的连接和释放。

原文地址:https://www.cnblogs.com/shengulong/p/6688925.html