Wie kann ich mehrere Klassen in der Single Test Suite im Python Unit Test ausführen?

Wie man mehrere Klassen in Single Test Suite in Python Unit Test läuft …..

5 Solutions collect form web for “Wie kann ich mehrere Klassen in der Single Test Suite im Python Unit Test ausführen?”

Wenn Sie Tests von mehreren TestLoader möchten, aber nicht alle TestLoader in einem Modul, nur eine bestimmte Liste von TestLoader , können Sie einen TestLoader , um eine TestSuite von Tests für jede Klasse zu erhalten, und dann alle diese Suiten zusammen in einer großen Suite zu laufen:

 import unittest class TestClassA(unittest.TestCase): def testOne(self): # test code pass class TestClassB(unittest.TestCase): def testOne(self): # test code pass class TestClassC(unittest.TestCase): def testOne(self): # test code pass if __name__ == '__main__': test_classes_to_run = [TestClassA, TestClassC] loader = unittest.TestLoader() suites_list = [] for test_class in test_classes_to_run: suite = loader.loadTestsFromTestCase(test_class) suites_list.append(suite) big_suite = unittest.TestSuite(suites_list) runner = unittest.TextTestRunner() results = runner.run(big_suite) # ... 

Ich bin ein bisschen unsicher auf das, was du hier fragst, aber wenn du wissen willst, wie man mehrere Klassen in der gleichen Suite testet, dann schaffst du einfach nur mehrere Testclasses in derselben Pythonendatei und lauf sie zusammen:

 import unittest class TestSomeClass(unittest.TestCase): def testStuff(self): # your testcode here pass class TestSomeOtherClass(unittest.TestCase): def testOtherStuff(self): # testcode of second class here pass if __name__ == '__main__': unittest.main() 

Und zum Beispiel mit:

 python mytestsuite.py 

Bessere Beispiele finden sich in der offiziellen Dokumentation .

Wenn Sie auf der anderen Seite mehrere Testdateien ausführen möchten, wie in "Wie kann ich den Python-Test so organisieren, dass ich alle Tests in einem einzigen Befehl ausführen kann?" , Dann ist die andere antwort wohl besser

Die Methode unittest.TestLoader.loadTestsFromModule () wird alle Klassen im angegebenen Modul entdecken und laden. So können Sie das einfach tun:

 import unittest import sys class T1(unittest.TestCase): def test_A(self): pass def test_B(self): pass class T2(unittest.TestCase): def test_A(self): pass def test_B(self): pass if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromModule( sys.modules[__name__] ) unittest.TextTestRunner(verbosity=3).run( suite ) 

Ich habe die Nase gefunden, um ein gutes Werkzeug dafür zu sein. Es entdeckt alle Unit-Tests in einer Verzeichnisstruktur und führt sie aus.

Normalerweise würden Sie auf folgende Weise tun (was nur eine Klasse pro Suite hinzufügt):

 # Add tests. alltests = unittest.TestSuite() alltests.addTest(unittest.makeSuite(Test1)) alltests.addTest(unittest.makeSuite(Test2)) 

Wenn Sie mehrere Klassen pro Suite haben möchten, können Sie diese Tests auf folgende Weise hinzufügen:

 for name in testnames: suite.addTest(tc_class(name, cargs=args)) 

Hier ist das gleiche Beispiel, um alle Klassen pro separate Suite laufen zu können, kannst du deine eigene Methode make_suite definieren:

 # Credits: http://codereview.stackexchange.com/a/88662/15346 def make_suite(tc_class): testloader = unittest.TestLoader() testnames = testloader.getTestCaseNames(tc_class) suite = unittest.TestSuite() for name in testnames: suite.addTest(tc_class(name, cargs=args)) return suite # Add all tests. alltests = unittest.TestSuite() for name, obj in inspect.getmembers(sys.modules[__name__]): if inspect.isclass(obj) and name.startswith("FooTest"): alltests.addTest(make_suite(obj)) result = unittest.TextTestRunner(verbosity=2).run(alltests) 

Wenn oben nicht Suite ist, kannst du das obige Beispiel in eine Methode umwandeln, die mehrere Klassen akzeptieren könnte.

  • Python unittest.TestCase Ausführungsauftrag
  • ValueError: keine solche Testmethode in <class 'myapp.tests.SessionTestCase'>: runTest
  • Laufen von Untermenge von Auto-entdeckten Python-Units
  • Wie kann ich Testberichte aus der webapp WSGI Applikation in Google App Engine ausführen?
  • Python unittest howto
  • Welchen Ansatz haben Sie für leichte Python-Unit-Tests auf App Engine verwendet?
  • Wie python Einheit Tests immer finden Test-Dateien, wenn aus verschiedenen Arbeitsverzeichnisse laufen?
  • Wie ordnungsgemäß Unit-Testing AssertRaises () mit NoneType-Objekten verwenden?
  • Testen mit Twisted und InlineCallbacks
  • Python, Unit-Test - Übergeben Sie Befehlszeilenargumente auf setUp von unittest.TestCase
  • Ist es möglich, dass ein Unit-Test behauptet, dass eine Methode sys.exit ()
  • Python ist die beste Programmiersprache der Welt.