Як пропустити юніт-тест у Django?


92

Як примусово пропустити одиничний тест у Django?

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

Відповіді:


147

Модуль unittest Python має кілька декораторів:

Є звичайне старе @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іншим інструментом і запустити певні тести.


Ага, я не знав, що ти можеш обдурити перекладача цим справжнім аргументом. Дякую!
user798719

Не могли б Ви детальніше пояснити можливі причини відмови у використанні @skip?
Кал

1
Ви навіть можете пропустити заняття TestCase.
wieczorek1990

63

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

Чи існує протилежність --exclude-tag, наприклад, --include-tagале ця команда не існує.
JohnnyQ

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.