测试期间Nosetest重复init类

时间:2016-11-04 10:35:10

标签: python unit-testing nose

我正在尝试使用nosetests并具有以下结构

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

在test_main.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)

在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”(它应该只在初始化时打印一次,其他类应该有权访问来自父类的相同对象)

我怎样才能实现这一目标,这也更好地构建了我的单元测试模块?

1 个答案:

答案 0 :(得分:0)

docs

为每个新的测试类调用

setUpClass

  

当测试套件遇到来自新类的测试时,将调用前一个类(如果有的话)中的tearDownClass(),然后调用新类中的setUpClass()。

如果您想让所有测试类只调用一次该方法,可以使用setUpModule,如该链接的下一段所述。