Comment sauter un test unitaire dans Django?

92

Comment sauter de force un test unitaire dans Django?

@skipif et @skipunless sont tout ce que j'ai trouvé, mais je veux juste sauter un test pour le moment à des fins de débogage pendant que je rectifie certaines choses.

user798719
la source

Réponses:

147

Le module unittest de Python a quelques décorateurs:

Il y a du vieux @skip:

from unittest import skip

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

Si vous ne pouvez pas utiliser @skippour une raison quelconque, cela @skipIfdevrait fonctionner. Trompez-le simplement pour toujours sauter avec l'argument True:

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

documents unittest

Documents sur le saut de tests

Si vous cherchez simplement à ne pas exécuter certains fichiers de test, le meilleur moyen est probablement d'utiliser fabun autre outil et d'exécuter des tests particuliers.

Ray Toal
la source
Ahh, je ne savais pas que vous pouviez tromper l'interprète avec ce vrai argument. Merci!
user798719
Pourriez-vous nous expliquer les raisons possibles de ne pas pouvoir utiliser @skip?
Kal
1
Vous pouvez même ignorer les classes TestCase.
wieczorek1990
63

Django 1.10 permet l'utilisation de balises pour les tests unitaires. Vous pouvez ensuite utiliser l' --exclude-tag=tag_nameindicateur pour exclure certaines balises:

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

Dans l'exemple ci-dessus, pour exclure vos tests avec la slowbalise " ", exécutez:

$ ./manage.py test --exclude-tag=slow
YPCrumble
la source
Y a-t-il un contraire à --exclude-tag, par exemple, --include-tagmais cette commande est inexistante.
JohnnyQ