Wie können einzelne Komponententests vorübergehend deaktiviert werden, wenn das unittest
Modul in Python verwendet wird?
python
python-unittest
Coelhudo
quelle
quelle
@unittest.SkipTest
funktioniert@unittest.skip
@unittest.skip
funktioniert auch gut.@unittest.skip
funktioniert nicht.Sie können Dekoratoren verwenden, um den Test zu deaktivieren, mit dem die Funktion umbrochen werden kann, und um zu verhindern, dass der Googletest- oder Python-Komponententest den Testfall ausführt.
Ausgabe:
quelle
Die neueste Version (2.7 - unveröffentlicht) unterstützt das Überspringen / Deaktivieren von Tests auf diese Weise . Sie können dieses Modul einfach herunterladen und für Ihre vorhandene Python-Installation verwenden. Es wird wahrscheinlich funktionieren.
Vor diesem, habe ich die Tests umbenennen wollte ich übersprungen
xtest_testname
austest_testname
.Hier ist ein kurzes Elisp-Skript, um dies zu tun. Mein Elisp ist etwas rostig, deshalb entschuldige ich mich im Voraus für etwaige Probleme. Ungetestet.
quelle
Es reicht aus, den
@unittest.SkipTest
Dekorateur einfach über dem Test zu platzieren.quelle
unittest.skip
(ohne Grund) gibt mir Fehler in Python 2, aber nicht in Python 3.Ich benenne gerade eine Testfallmethode mit einem Unterstrich um: test_myfunc wird zu _test_myfunc.
quelle
In den Dokumenten für 2.1 ist keine Ignorier- oder Überspringmethode angegeben.
Normalerweise blockiere ich jedoch Kommentare, wenn dies erforderlich ist.
quelle
Wenn Sie sich auf den Teil der Frage "vorübergehend deaktiviert" konzentrieren, hängt die beste Antwort etwas vom Anwendungsfall ab. Der Anwendungsfall, der mich hierher gebracht hat, ist, dass ich eine testgetriebene Entwicklung für eine Funktion durchführe. In diesem Prozess schreibe ich nacheinander Tests und verwende häufig Haltepunkte in der Funktion zum Debuggen. Wenn ich jedes Mal, wenn ich den Testläufer ausführe, alle Tests durchführe, halte ich an Haltepunkten für Tests an, die bereits funktionieren. Das Hinzufügen von "Überspringen" oder das Munging des Testnamens oder ähnliches ist nicht das, was ich möchte, da ich nach dem Schreiben der Funktion möchte, dass alle Tests ausgeführt werden. Wenn ich "überspringen" verwenden würde, müsste ich zurückgehen und "überspringen".
Für meinen Anwendungsfall liegt die Lösung im Testläufer, nicht im Testcode. Ich benutze Pytest . Mit pytest ist es einfach, einen einzelnen Test über die Befehlszeile anzugeben:
(Ersetzen Sie die Kappen durch Ihre Werte).
Ich verstehe, dass diese Frage für Python-Unitest war. Ich habe das schon lange nicht mehr benutzt. Ich wäre nicht überrascht, wenn es etwas Ähnliches wie Pytest hätte. Wenn nicht, können Sie einfach zu pytest wechseln. Sie müssen Ihren Code nicht ändern. Installieren Sie es einfach und ändern Sie Ihren Testrunner-Befehl.
Außerdem benutze ich PyCharm Pro. Auf der Seite, auf der mein Testcode angezeigt wird, befindet sich für jeden Test neben dem Def ein kleines Symbol. Ich kann auf dieses Symbol klicken und diesen Test einzeln ausführen.
quelle