Laufen von Untermenge von Auto-entdeckten Python-Units

Kurze Frage
Ist es möglich zu wählen, zur Laufzeit, welche Units werden ausgeführt werden, wenn Sie eine Auto-Discovery-Methode in Python's unittest Modul verwenden.

Hintergrund
Ich benutze das Unbekannte Modul, um Systemtests auf einem externen System auszuführen. Siehe unten für ein Beispiel sudo-testcase. Das unbescheidene Modul erlaubt mir, eine beliebige Nummer Testcases zu erstellen, die ich mit dem Unbekannten Testrunner laufen kann. Ich benutze diese Methode etwa 6 Monate ständiger Gebrauch und es funktioniert sehr gut.

Zu diesem Zeitpunkt möchte ich versuchen, dies generischer und benutzerfreundlicher zu machen. Für alle meine Test-Suiten, die ich jetzt laufe, habe ich hart codiert, welche Tests für jedes System laufen müssen. Dies ist in Ordnung für ein ungetestetes System, aber wenn ein Test fehlschlägt falsch (ein Benutzer verbindet sich mit dem falschen Testpunkt etc …) müssen sie die gesamte Test-Suite neu ausführen. Da einige der kompletten Suiten bis zu 20 min dauern können, ist das nicht in der Nähe ideal.

Ich weiß, dass es möglich ist, benutzerdefinierte Testsuite-Builder zu erstellen, die festlegen können, welche Tests ausgeführt werden sollen. Mein Problem damit ist, dass es Hunderte von Testcases gibt, die ausgeführt werden können und beibehalten werden würde ein Albtraum kommen, wenn Test Fallnamen ändern etc …

Meine Hoffnung war, die Nase zu benutzen, oder das eingebaute unbescheidene Modul, um dies zu erreichen. Der Entdeckungsteil scheint für beide Optionen ziemlich einfach zu sein, aber mein Problem ist, dass nur die Möglichkeit besteht, eine Untermenge von Testcases auszuwählen, um zu laufen, um ein Muster zu definieren, das im Testfallnamen existiert. Dies bedeutet, ich würde noch hart Code eine Liste von Mustern zu definieren, welche Testfälle zu laufen. Also, wenn ich hart kodieren muss diese Liste, was ist der Punkt der Verwendung der Auto-Entdeckung (bitte beachten Sie, dies ist rhetorische Frage)?

Mein Ziel ist es, eine generische Möglichkeit zu haben, auszuwählen, welche Units während der Ausführung ausgeführt werden soll, in Form von Kontrollkästchen oder einem Textfeld, das der Benutzer bearbeiten kann. Idealerweise würde die Lösung Python 2.7 verwenden und die Notwendigkeit, auf Windows, OSX und Linux laufen zu müssen.

Bearbeiten
Um zu klären, ich möchte nicht das Werkzeug, um die Liste der Auswahl oder die Kontrollkästchen zu generieren. Das Tool würde idealerweise eine Liste aller Tests in einem Verzeichnis zurückgeben, einschließlich des vollständigen Pfades und welche Suite (falls vorhanden) der Testfall hinuntergeht. Mit dieser Liste würde ich die Kontrollkästchen oder ein Kombinationsfeld bauen, mit dem der Benutzer interagiert und diese Tests in eine Testuite auf der Fliege ausführen.

Beispiel Testfall

test_measure_5v_reference 1) Connect to DC power supply via GPIB 2) Set DC voltage to 12.0 V 3) Connect to a Digital Multimeter via GPIB 4) Measure / Record the voltage at a given 5V reference test point 5) Use unittest's assert functions to make sure the value is within tolerance 

One Solution collect form web for “Laufen von Untermenge von Auto-entdeckten Python-Units”

Speichern Sie jede Teilmenge von Tests in einem eigenen Modul. Holen Sie sich eine Liste der Modulnamen, indem Sie den Benutzer mit ihnen auswählen, wie Sie angegeben haben, Checkboxen oder Texteingaben. Sobald Sie die Liste der Modulnamen haben, können Sie eine entsprechende Test-Suite erstellen, die etwas ähnelt wie das folgende.

 testsuite = unittest.TestSuite() for module in modules: testsuite.addTest(unittest.defaultTestLoader.loadTestsFromModule(module)) 
  • Wie schreibe ich eine benutzerdefinierte `.assertFoo ()` Methode in Python?
  • Python, Unit-Test - Übergeben Sie Befehlszeilenargumente auf setUp von unittest.TestCase
  • Reihenfolge der Unit-Tests in Python
  • Caching Ergebnis von setUp () mit Python unittest
  • Testen mit Twisted und InlineCallbacks
  • Testen Sie, ob eine Klasse von einem anderen geerbt wird
  • Grundlegende Python-Unbekannte TestSuite-Frage
  • Warum behaupten Behauptungen in unbestimmter Verwendung TestCase.assertEqual nicht das Bestätigungsschlüsselwort?
  • Running Unit Tests im Test Bundle in Python
  • ValueError: keine solche Testmethode in <class 'myapp.tests.SessionTestCase'>: runTest
  • Python unbestimmt vorübergehende Argumente
  • Python ist die beste Programmiersprache der Welt.