2016-05-09 8 views
1

könnte setUpClass in unitest Rahmen erweitert werden?könnte setUpClass in unitest Rahmen erweitert?

define Base1, die die unitest.TestCase erweitert, hat die Base1 setUpClass-Methode.

import unittest 
class Base1(unittest.TestCase): 

@classmethod 
def setUpClass(cls): 
    print('setupClass - this is Base1') 

@classmethod 
def tearDownClass(cls): 
    print('tearDownClass - this is Base1') 

Base2 definieren, die die Base1 Klasse

from Base1 import Base1 
import unittest 

class Base2(Base1): 

@classmethod 
def setUpClass(cls): 
    print('setupClass - this is Base2') 

@classmethod 
def tearDownClass(cls): 
    print('tearDownClass - this is Base2') 

def test_default_size(self): 
    self.assertEqual('a','a') 

def test_resize(self): 
    self.assertEqual('a','b') 

Ich möchte die setUpClass in Base1 und setUpClass in Base2 ausgeführt, bevor alle Testfälle in Base2 erstreckt, könnte dies möglich sein?

Antwort

2

Sie haben ausdrücklich setUpClass und tearDownClass nennen:

class Base2(Base1): 
    @classmethod 
    def setUpClass(cls): 
     print('setupClass - this is Base2') 
     super(Base2, cls).setUpClass() 

    @classmethod 
    def tearDownClass(cls): 
     print('tearDownClass - this is Base2') 
     super(Base2, cls).tearDownClass() 

Wenn Sie jedoch nicht auf diese Klasse Methoden hinzufügen, können Sie überspringen sie definieren:

class Base3(Base1):, 
    def test1(self): 
     print('test1') 

In diesem Fall setUpClass und tearDownClass von Base1 wird implizit aufgerufen.

+0

Dank Hai, es funktioniert. –