Как пропустить модульный тест в Django?

96

Как принудительно пропустить модульный тест в Django?

@skipif и @skipunless - это все, что я нашел, но я просто хочу пропустить тест прямо сейчас для целей отладки, пока я кое-что исправлю.

user798719
источник

Ответы:

152

В модуле Python unittest есть несколько декораторов:

Есть старый добрый @skip:

from unittest import skip

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

Если вы не можете использовать @skipпо какой-то причине, @skipIfдолжно работать. Просто обманите его, чтобы всегда пропускать аргумент True:

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

документы unittest

Документы о пропуске тестов

Если вы хотите просто не запускать определенные тестовые файлы, лучший способ - это использовать fabдругой инструмент и запускать определенные тесты.

Рэй Тоул
источник
Ах, я не знал, что вы можете обмануть интерпретатора с помощью этого аргумента True. Благодарность!
user798719 08
Не могли бы вы подробнее рассказать о возможных причинах невозможности использования @skip?
Kal
1
Вы даже можете пропустить занятия TestCase.
wieczorek1990
69

Django 1.10 позволяет использовать теги для модульных тестов. Затем вы можете использовать этот --exclude-tag=tag_nameфлаг для исключения определенных тегов:

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

В приведенном выше примере, чтобы исключить тесты с slowтегом " ", вы должны выполнить:

$ ./manage.py test --exclude-tag=slow
YPCrumble
источник
Есть ли противоположность --exclude-tag, например, --include-tagно этой команды не существует.
JohnnyQ