Wie überspringt man einen Unit Test in Django?

92

Wie kann man einen Unit-Test in Django zwangsweise überspringen?

@skipif und @skipunless sind alles, was ich gefunden habe, aber ich möchte jetzt nur einen Test zum Debuggen überspringen, während ich ein paar Dinge klarstelle.

user798719
quelle

Antworten:

143

Pythons unittestes Modul hat einige Dekorateure:

Es ist einfach alt @skip:

from unittest import skip

@skip("Don't want to test")
def test_something():
    ...

Wenn Sie @skipaus irgendeinem Grund nicht verwenden können , @skipIfsollte funktionieren. Trick es einfach, um immer mit dem Argument zu überspringen True:

@skipIf(True, "I don't want to run this test yet")
def test_something():
    ...

unittest docs

Dokumente zum Überspringen von Tests

Wenn Sie bestimmte Testdateien einfach nicht ausführen möchten, ist es wahrscheinlich am besten, ein fabanderes Tool zu verwenden und bestimmte Tests auszuführen.

Ray Toal
quelle
Ahh, ich wusste nicht, dass Sie den Dolmetscher mit diesem wahren Argument austricksen können. Vielen Dank!
user798719
Könnten Sie mögliche Gründe für die Nichtverwendung erläutern @skip?
Kal
Sie können sogar TestCase-Klassen überspringen.
wieczorek1990
63

Django 1.10 ermöglicht die Verwendung von Tags für Unit-Tests. Sie können dann das --exclude-tag=tag_nameFlag verwenden, um bestimmte Tags auszuschließen:

from django.test import tag

class SampleTestCase(TestCase):

    @tag('fast')
    def test_fast(self):
        ...

    @tag('slow')
    def test_slow(self):
        ...

    @tag('slow', 'core')
    def test_slow_but_core(self):
        ...

Im obigen Beispiel slowwürden Sie Folgendes ausführen , um Ihre Tests mit dem Tag " " auszuschließen :

$ ./manage.py test --exclude-tag=slow
YPCrumble
quelle
Gibt es ein Gegenteil von --exclude-tagzB, --include-tagaber dieser Befehl ist nicht vorhanden.
JohnnyQ