Antworten:
Einzelne Testmethoden oder Klassen können beide mit dem unittest.skip
Dekorator deaktiviert werden .
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Weitere Optionen finden Sie in den Dokumenten zum Überspringen von Tests und erwarteten Fehlern .
@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.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Ausgabe:
testFoo has been disabled
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
aus test_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.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Es reicht aus, den @unittest.SkipTest
Dekorateur einfach über dem Test zu platzieren.
unittest.skip
(ohne Grund) gibt mir Fehler in Python 2, aber nicht in Python 3.
In den Dokumenten für 2.1 ist keine Ignorier- oder Überspringmethode angegeben.
Normalerweise blockiere ich jedoch Kommentare, wenn dies erforderlich ist.
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:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(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.
@unittest.SkipTest
funktioniert@unittest.skip