2016-11-04 4 views
0

Ich versuche nosetests zu verwenden und haben die folgende StrukturNosetest wiederholt init Klasse während der Prüfung

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

innerhalb test_main.py Ich habe den Code folgende

class A(unittest.TestCase): 

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


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

innen 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) 

innerhalb 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) 

Das Ergebnis, das ich ist bekam (in Reihenfolge):

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 

Nach der nosetest Dokumentation, verstehe ich, dass nosetests werden alle Tests/Ordner Index und die innerhalb von Dateien und für die Funktion des Tests tun Das beginnt mit test_zzz. Aber es verwirrt mich, wie ich tatsächlich das Objekt in Klasse C und Klasse B habe, die von Klasse A abgeleitet ist, ohne die "Hello World" zweimal gedruckt (es sollte nur einmal bei der Initialisierung gedruckt werden, und andere Klasse sollte Zugriff haben zum selben objIWant von der Elternklasse)

Wie erreiche ich das, dass auch meine Unittest-Module besser strukturiert sind?

Antwort

0

setUpClass wird für jede neue Klasse von Tests genannt, aus den docs:

Wenn die Testsuite einen Test aus einer neuen Klasse trifft dann tearDownClass() aus der vorherige Klasse (falls vorhanden) ist aufgerufen, gefolgt von setUpClass() von der neuen Klasse.

Wenn Sie nur einmal für alle Ihre Testklassen genannt, dass die Methode haben wollen, vielleicht setUpModule verwenden, wie im nächsten Abschnitt dieser Verbindung beschrieben.

Verwandte Themen