Django 1.7 introdujo migraciones de bases de datos .
Al ejecutar las pruebas unitarias en Django 1.7, obliga a migración , que lleva mucho tiempo. Entonces me gustaría omitir las migraciones de Django y crear la base de datos en el estado final.
Sé que ignorar las migraciones puede ser una mala práctica, ya que esa parte del código no se probaría. Pero ese no es el caso: estoy ejecutando las migraciones completas en el servidor de prueba de CI (jenkins). Solo quiero omitir las migraciones en mis pruebas locales, donde la velocidad importa.
Algo de contexto:
Hasta Django 1.6 , cuando usaba South, usaba SOUTH_TESTS_MIGRATE configuración :
De forma predeterminada, el comando syncdb de South también aplicará migraciones si se ejecuta en modo no interactivo, lo que incluye cuando está ejecutando pruebas; ejecutará todas las migraciones cada vez que ejecute sus pruebas.
Si desea que el ejecutor de prueba use syncdb en lugar de migrar, por ejemplo, si sus migraciones están tardando demasiado en aplicarse, simplemente configure SOUTH_TESTS_MIGRATE = False en settings.py.
Sin embargo, syncdb ya no existe, ahora está migrando .
Y a partir de Django 1.8 Voy a usar el --keepdb parámetro:
La opción --keepdb se puede utilizar para preservar la base de datos de prueba entre ejecuciones de prueba. Esto tiene la ventaja de omitir las acciones de creación y destrucción, lo que reduce en gran medida el tiempo para ejecutar las pruebas, especialmente las que se encuentran en un conjunto de pruebas grande. Si la base de datos de prueba no existe, se creará en la primera ejecución y luego se conservará para cada ejecución posterior. Cualquier migración no aplicada también se aplicará a la base de datos de prueba antes de ejecutar el conjunto de pruebas.
Entonces esta pregunta se limita a Django 1.7.
django-test-without-migrations
paquete ha sido realmente útil para mí, es posible que desee cambiar la respuesta aceptada a stackoverflow.com/a/28993456/200224