2016-10-11 4 views
0

würde Ich mag eine Variable verwenden, die ich in der Unterklasse zu initialisieren, ist der Code-Snippet unten hier im setUpClass der Elternklasse verwendet werden:Mit Variable innerhalb setUpClass (Klassenmethode) - Unittest Python

class BaseTest(unittest.TestCase): 

    def __init__(cls, arg): 
     unittest.TestCase.__init__(cls, arg) 

    @classmethod 
    def setUpClass(cls): 
     print "Base.setUp()" ,cls.param 

    @classmethod 
    def tearDownClass(cls): 
     print "Base.tearDown()" 


class TestSomething(BaseTest): 
    def __init__(cls, arg): 
     BaseTest.__init__(cls, arg) 
     cls.param = 'hello' 

    def test_silly(self): 
     print "Test method" 
     self.assertTrue(1+1 == 2) 

    def test_silly1(self): 
     print "Test method" 
     self.assertTrue(1+1 == 2) 

Es gibt mir dies: AttributeError: type object 'TestSomething' has no attribute 'param', die ich verstehe, ist wahr als setUpClass and tearDownClass sind Klasse und nicht Instanz Methode, jede Möglichkeit, Variable in der Basisklasse verwendet in setUpClass of parent class verwendet zu verwenden?

Antwort

0

Sie müssen cls.paramvor Sie BaseTest.__init__(cls, arg) anrufen.

+0

'' 'print" Base.setUp() ", cls.param AttributError: Typ Objekt 'TestSomething' hat kein Attribut 'param'''' Auch nachdem es vor dem Superaufruf deklariert wurde. –

+0

Es klingt wie 'setUpClass' aufgerufen wird, bevor eine Instanz der Klasse erstellt wird. Sie müssen Details zu dem von Ihnen verwendeten Test-Runner angeben. – chepner

Verwandte Themen