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.

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.


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

Y a-t-il un contraire à --exclude-tag, par exemple, --include-tagmais cette commande est inexistante.
JohnnyQ

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.