Jak pominąć test jednostkowy w Django?

96

Jak na siłę pominąć test jednostkowy w Django?

@skipif i @skipunless to wszystko, co znalazłem, ale chcę teraz tylko pominąć test do celów debugowania, podczas gdy kilka rzeczy zostanie wyjaśnionych.

user798719
źródło

Odpowiedzi:

152

Moduł unittest w Pythonie ma kilka dekoratorów:

Jest zwykły stary @skip:

from unittest import skip

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

Jeśli @skipz jakiegoś powodu nie możesz użyć , @skipIfpowinno działać. Po prostu oszukuj, aby zawsze przeskakiwać z argumentem True:

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

unittest docs

Dokumenty o pomijaniu testów

Jeśli nie chcesz po prostu uruchamiać niektórych plików testowych, najlepszym sposobem jest prawdopodobnie użycie fablub innego narzędzia i uruchomienie określonych testów.

Ray Toal
źródło
Ach, nie wiedziałem, że tym Prawdziwym argumentem można oszukać tłumacza. Dzięki!
user798719
Czy mógłbyś opisać możliwe powody, dla których nie @skipmożesz używać ?
Kal
1
Możesz nawet pominąć zajęcia TestCase.
wieczorek1990
69

Django 1.10 pozwala na używanie tagów do testów jednostkowych. Następnie możesz użyć --exclude-tag=tag_nameflagi, aby wykluczyć określone tagi:

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):
        ...

W powyższym przykładzie, aby wykluczyć testy za pomocą slowtagu „ ”, należy:

$ ./manage.py test --exclude-tag=slow
YPCrumble
źródło
Czy jest coś przeciwnego --exclude-tagnp. --include-tagAle to polecenie nie istnieje.
JohnnyQ,