Come salti uno unit test a Django?


92

Come saltare forzatamente uno unit test in Django?

@skipif e @skipunless sono tutto ciò che ho trovato, ma voglio solo saltare un test in questo momento per scopi di debug mentre riesco a sistemare alcune cose.

Risposte:


147

Il modulo unittest di Python ha alcuni decoratori:

C'è semplicemente vecchio @skip:

from unittest import skip

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

Se non puoi usarlo @skipper qualche motivo, @skipIfdovrebbe funzionare. Basta ingannarlo per saltare sempre con l'argomento True:

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

unittest docs

Documenti su come saltare i test

Se stai semplicemente cercando di non eseguire determinati file di test, il modo migliore è probabilmente quello di utilizzare fabo un altro strumento ed eseguire test particolari.


Ahh, non sapevo che potessi ingannare l'interprete con quella vera argomentazione. Grazie!
user798719

Potresti approfondire le possibili ragioni per non poterlo utilizzare @skip?
Kal

1
Puoi anche saltare le lezioni di TestCase.
wieczorek1990

63

Django 1.10 consente l'uso di tag per gli unit test. È quindi possibile utilizzare il --exclude-tag=tag_nameflag per escludere determinati tag:

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

Nell'esempio precedente, per escludere i tuoi test con il slowtag " " dovresti eseguire:

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

C'è un contrario a --exclude-tag, ad esempio, --include-tagma questo comando è inesistente.
JohnnyQ

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.