2016-11-04 48 views
0

我试图使用nosetests和具有内test_main.py以下结构Nosetest测试

tests|-- test_main.py 
    |-- test_fileone.py 
    |-- test_filetwo.py 

我有以下代码

class A(unittest.TestCase): 

    @classmethod 
    def setUpClass(self): 
     print "Hello World" 
     self.objIwant="12" 


     @classmethod 
     def tearDownClass(cls): 
      self.objIwant.quit() 

test_fileone.py

期间内重复初始化类
class B(A): 

     def test_loginpage(self): 
      testme(self.objIwant) 
      def test_logoutpage(self): 
       testme_other(self.objIWant) 
     #followed other def test_zzz(self) 

inside test_filetwo.py

class C(A): 
     def test_clickpage(self): 
      clickme(self.objIwant) 
      def test_revertpage(self): 
       revertme(self.objIWant) 
     #followed other def test_zzz(self) 

,我得到的结果是(按顺序):

1. HelloWorld printed 
2. Result of test_loginpage 
3. Result of test_logoutpage 
4. Helloworld printed 
5. Result of test_clickpage 
6. Result of test_revertpage 

按照nosetest文档,我的理解是nosetests将指数的所有测试/文件夹里面的文件,以及功能做了测试以test_zzz开头。 但是,它让我很困惑,如何在类C和类B中实际拥有objIWant,它是从类A派生的,没有“Hello World”打印两次(它只能在初始化时打印一次,其他类应该有权访问从父类到相同的目标)

我该如何做到这一点,这也使我的unittests模块结构更好?

回答

0

setUpClass被调用的测试每个新的类,从docs

当测试套件从来自先前类的新类然后tearDownClass()遇到的测试(如果有)是称为,然后是新类的setUpClass()。

如果你想有只调用一次为您的所有测试类中的方法,或者用setUpModule作为该链接的下一段描述。