web-dev-qa-db-fra.com

Comment sauter un test unitaire dans Django?

Comment ignorer de force un test unitaire dans Django?

@skipif et @skipunless sont tout ce que j'ai trouvé, mais je veux juste sauter un test en ce moment à des fins de débogage pendant que j'obtiens quelques choses redressées.

78
user798719

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 @skip pour certaines raisons, @skipIf devrait marcher. Il suffit de le tromper pour toujours sauter avec l'argument True:

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

dittest docs

Documents sur les sauts de tests

Si vous cherchez simplement à ne pas exécuter certains fichiers de test, la meilleure façon est probablement d'utiliser fab ou un autre outil et d'exécuter des tests particuliers.

117
Ray Toal

Django 1.10 permet l'utilisation de balises pour les tests unitaires. Vous pouvez ensuite utiliser le --exclude-tag=tag_name drapeau 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 balise "slow", vous devez exécuter:

$ ./manage.py test --exclude-tag=slow
52
YPCrumble