¿Cómo se salta una prueba unitaria en Django?

92

¿Cómo omitir por la fuerza una prueba unitaria en Django?

@skipif y @skipunless es todo lo que encontré, pero solo quiero omitir una prueba ahora mismo con fines de depuración mientras soluciono algunas cosas.

usuario798719
fuente

Respuestas:

147

El módulo unittest de Python tiene algunos decoradores:

Hay simplemente viejo @skip:

from unittest import skip

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

Si no puede usar @skippor alguna razón, @skipIfdebería funcionar. Simplemente engañelo para omitir siempre el argumento True:

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

unittest docs

Documentos sobre cómo omitir pruebas

Si está buscando simplemente no ejecutar ciertos archivos de prueba, la mejor manera probablemente sea usar fabu otra herramienta y ejecutar pruebas particulares.

Ray Toal
fuente
Ahh, no sabía que se podía engañar al intérprete con ese argumento de True. ¡Gracias!
user798719
¿Podría explicar las posibles razones por las que no se puede utilizar @skip?
Kal
1
Incluso puede omitir las clases de TestCase.
wieczorek1990
63

Django 1.10 permite el uso de etiquetas para pruebas unitarias. Luego puede usar la --exclude-tag=tag_namebandera para excluir ciertas etiquetas:

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

En el ejemplo anterior, para excluir sus pruebas con la slowetiqueta " ", ejecutaría:

$ ./manage.py test --exclude-tag=slow
YPCrumble
fuente
¿Existe un opuesto a --exclude-tag, por ejemplo, --include-tagpero este comando no existe?
JohnnyQ