Cómo ver qué pruebas se ejecutaron durante el comando de prueba manage.py de Django

80

Una vez finalizada la ejecución de las pruebas utilizando el manage.py testcomando de Django, solo se imprime en la consola el número de pruebas aprobadas.

(virtualenv) G:\Project\>python manage.py test
Creating test database for alias 'default'...
True
..
----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK
Destroying test database for alias 'default'...

¿Hay alguna forma de ver?

  1. qué pruebas se ejecutaron realmente
  2. de que módulo
  3. en qué orden

No he encontrado ninguna solución en el doc.

Mariusz Jamro
fuente

Respuestas:

128

Puedes pasar -v 2al testcomando:

python manage.py test -v 2

Después de ejecutar este comando, obtendrá algo como esto (estoy usando django 2, no dude en ignorar las migraciones / cosas de la base de datos):

Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: admin, auth, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
   Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  ...
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_equal_hard (polls.tests.TestHard) ... ok      <--------+
test_equal_simple (polls.tests.TestSimple) ... ok  <--------+
                                                            |
                                                            |
           That's your tests!  >----------------------------+

Por cierto, vsignifica verbosidad (también puede usar --verbosity=2):

python manage.py test --verbosity=2

Aquí está el extracto del python manage.py test --help:

-v {0,1,2,3}, --verbosity {0,1,2,3}

Nivel de verbosidad; 0 = salida mínima, 1 = salida normal, 2 = salida detallada, 3 = salida muy detallada

Nigel Tufnel
fuente
22

La respuesta de Nigel es excelente y definitivamente la barrera más baja para la opción de entrada. Sin embargo, se puede mejorar aún más con la retroalimentación django_nose(y no es que difícil de configuración;).

El siguiente es de: BDD con Python

Primero: instale algunos requisitos:

pip install nose pinocchio django_nose

Luego agregue lo siguiente a settings.py

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-spec', '--spec-color']

Luego, ejecute sus pruebas como de costumbre:

python manage.py test

La salida debería verse así:

ingrese la descripción de la imagen aquí

Nota: Los comentarios en sus pruebas se pueden usar para dar un resultado aún mejor que solo el nombre.

p.ej:

def test_something(self):
    """Something should happen"""
    ...

Emitirá "Algo debería suceder" al ejecutar la prueba.

Para obtener puntos adicionales: también puede generar / generar la cobertura de su código:

pip install coverage

Agregue lo siguiente a su NOSE_ARGS en settings.py: '--with-coverage', '--cover-html', '--cover-package=.', '--cover-html-dir=reports/cover'

p.ej:

NOSE_ARGS = ['--with-spec', '--spec-color', 
         '--with-coverage', '--cover-html', 
         '--cover-package=.', '--cover-html-dir=reports/cover']

Entonces obtendrá un buen resumen de la cobertura del código cuando lo ejecute python manage.py test, así como un informe html ordenado enreports/cover

toast38coza
fuente
Hola @ toast38coza. Eso es bastante bueno. Soy nuevo en Python y es bueno ver una salida de prueba bien formateada. Estaba buscando documentación para NOSE_ARGS, pero nada de lo que encontré muestra: con especificaciones y similares. ¿Podrías señalarme eso por favor? Básicamente estoy tratando de evitar que nose repita "Similar a TransactionTestCase, pero utilícelo transaction.atomic()para lograr el aislamiento de prueba ......... nTestCase podría ser necesario (por ejemplo, probar algún comportamiento transaccional)".
Macario Tala
@MacarioTala el argumento --with-spec proviene del pinocchiocomplemento (puede instalarlo por pip). Vea donde dice: "primero instale algunos requisitos" arriba.
toast38coza
Sí. Lo tengo instalado. Entonces intentaré encontrar documentación sobre pinocho. ¡Gracias!
Macario Tala
1
En el interés de compartir, cambié pinocho porque era un poco demasiado detallado, y en lugar de bifurcarlo, encontré esto: gfxmonk.net/dist/0install/rednose.xml , puede que también te guste.
Macario Tala