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.