2016-04-18 15 views
4

Ich versuche, nur einen einzigen Test von den Unit-Tests in einer Klasse durchgeführt. Also unter der AnnahmeFühren Sie spezifische Komponententests in Python aus main()

class MytestSuite(unittest.TestCase): 
    def test_false(self): 
     a = False 
     self.assertFalse(a, "Its false") 

    def test_true(self): 
     a = True 
     self.assertTrue(a, "Its true") 

Ich möchte nur test_false laufen. Basierend auf dem Q & A, die auf dieser Website und Online habe ich die folgenden Codezeilen in meiner Hauptklasse

if __name__ == "__main__": #Indentation was wronng 
    singletest = unittest.TestSuite() 
    singletest.addTest(MytestSuite().test_false) 
    unittest.TextTestRunner().run(singletest) 

ich Fehler werden immer beim Versuch, den Test hinzuzufügen. Hauptsächlich:

File "C:\Python27\Lib\unittest\case.py", line 189, in __init__ 
(self.__class__, methodName)) 
ValueError: no such test method in <class '__main__.MytestSuite'>: runTest 

Benötige ich eine bestimmte runTest-Methode in meiner Klasse? Gibt es eine Möglichkeit, bestimmte Tests auszuführen, die zu verschiedenen Suites gehören? ZB: Methode A gehören zu Suite Klasse 1 und Methode B gehören zu Suite Klasse 2. Überraschenderweise hat sich dies als schwierig herausgestellt, online zu finden. Es gibt mehrere Beispiele dafür, dies über die Befehlszeile zu tun, aber nicht über das Programm selbst. Wie immer wird jede Hilfe geschätzt.

+0

Ich war gerade dabei, für die Einrückung zu bearbeiten, aber dann fiel es mir auf. Hast du den Einzug für 'class MytestSuite' überprüft? Sieht für mich wie eine leere Klasse aus, wenn die Funktionen nicht eingerückt sind. – noumenal

+0

Entschuldigung wegen der Einrückung. Ich richte es in meinem Programm richtig ein. Ich konnte es nicht in StackOverflow arbeiten lassen, obwohl ich die Seite schon eine ganze Weile benutzt habe :) – Fizi

+0

4 Leerzeichen werden das tun :-) – noumenal

Antwort

4

Sie übergeben nur die falsche Sache an addTest. Anstatt eine gebundene Methode zu übergeben, müssen Sie eine neue Instanz von TestCase (in Ihrem Fall eine Instanz von MyTestSuite) übergeben, die mit dem Namen des Einzeltests erstellt wurde, den Sie ausführen möchten.

singletest.addTest(MyTestSuite('test_false')) 

The Docs haben viele zusätzliche Informationen und Beispiele zu diesem Thema.

+0

Ahh Danke. ein weiterer Grund, warum ich beim Lesen von Dokumenten gründlicher sein sollte. – Fizi

Verwandte Themen