unitarias unit tutorial test pruebas form example create authenticate django django-testing

unit - pytest django



diferencia entre django.test.TestCase vs unittest vs django.utils.unittest.TestCase (1)

El TestCase de Django mejora unittest.TestCase con algunas características adicionales:

  • Carga automática de los accesorios.
  • Envuelve cada prueba en una transacción.
  • Crea una instancia de TestClient.
  • Afirmaciones específicas de Django para probar cosas como redireccionamiento y errores de forma.

En términos generales, lo más probable es que estés usando una de las subclases TestCase de Django. Por lo general, esto será django.test.TestCase , que, por eficiencia, envuelve la prueba en una transacción de base de datos y utiliza la reversión para "deshacer" la prueba en la base de datos. Si necesita administrar manualmente las transacciones dentro de su prueba, tendría que usar django.test.TransactionTestCase , ya que no puede iniciar / deshacer una transacción dentro de una transacción.

Hay algunas advertencias menores sobre el uso de django.test.TestCase , vea la nota here para obtener más información.

ADEMÁS:

Si solo está buscando una forma de ejecutar sus pruebas más rápido, eche un vistazo a las pruebas en la memoria y (si está usando South), configure SOUTH_TESTS_MIGRATE = False para decirle a South que use un syncdb (mucho más rápido) al crear la base de datos de prueba, en lugar de ejecutar migraciones.

Todavía estoy usando Django 1.2.1, y creo que con el Django más nuevo no import unittest y luego hacemos unittest.TestCase .

Ilustración

import unittest class TestThis(unittest.TestCase): from django.utils.unittest import TestCase class TestThis(TestCase): from django.test import TestCase class TestThis(TestCase):

Según la charla de PyCon2011 , la segunda es un poco más eficiente.

Aquí está el diagram muestra las relaciones:

Entonces django.utils.unittest y django.test heredan de unittest o unittest2 .

No estoy seguro si lo siguiente es correcto o no. Por favor ayuda a editar.

________________________________________________________________ | Name | Django Version | Python Version | ----------------------------------------------------------------- | unittest | >= 1.0 | >= 2.6 | ----------------------------------------------------------------- | django.utils.unittest | >= 1.3 | ?? | ----------------------------------------------------------------- | django.test | >= 1.0 | >= 2.6 | | - SimpleTestCase >= 1.4 >= 2.7 | | - LiveServerTestCase >= 1.4 >= 2.7 | -----------------------------------------------------------------

En términos de eficiencia, ¿cuál de los tres es mejor? Muchos desarrolladores de Django se burlan cuando prueban, por lo que a veces las bases de datos ni siquiera son necesarias. ¿Hay alguna manera de no crear tablas cuando ejecutamos manage.py test myapp.MyClass ? Para la versión anterior (anterior a la 1.3), ¿cuál es mejor?