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.

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.


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

Gibt es ein Gegenteil von --exclude-tagzB, --include-tagaber dieser Befehl ist nicht vorhanden.
JohnnyQ

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.