2010-06-28 16 views
14

Ejecutar las pruebas de la unidad Django es ahora demasiado lento. Especialmente cuando solo quiero ejecutar una prueba, pero el corredor de prueba quiere crear la base de datos completa y destruir todo para esa prueba.¿Cómo le digo a Django que guarde mi base de datos de prueba?

En el caso en que no haya cambiado ninguno de mis modelos, podría ahorrar montones de tiempo si Django no se molestara en tratar de crear y destruir toda la base de datos, y en cambio la guardó para la próxima vez. Mejor aún, sería genial si el corredor de prueba fuera capaz de ver qué modelos han cambiado y solo reemplazarlos antes de ejecutar las pruebas.

Preferiría no tener que subclasificar al corredor de prueba, pero eso es lo que tendré que hacer si no encuentro una solución pronto. ¿Ya hay algo como esto en existencia?

Respuesta

8

En django1.8 añade el nuevo parámetro para manage.py test comando --keepdb

./manage.py test --keepdb 
4

¿Ha intentado utilizar una base de datos SQLite en la memoria para las pruebas? Es mucho más rápido que usar una base de datos basada en disco.

+0

La última vez que lo intenté, SpatiaLite no estaba jugando muy bien en cualquier versión de Ubuntu que estaba usando, así que rápidamente abandonados ese. Debería intentarlo de nuevo ahora sin embargo. –

+3

Creo que es necesario ejecutar las pruebas en la misma base de datos, como se usa en vivo, si no siempre, al menos antes de cada confirmación. –

+0

Precaución: SQLite3 actualmente NO funciona con subprocesos múltiples, por lo que si tiene alguna prueba (de integración) que dependa de/pruebe el acceso concurrente a la base de datos, le causará dolor. – JohnJ

1

estoy usando Djang-nariz. Si configura un env var REUSE_DB = 1, no destruirá el DB después de ejecutar pruebas y volverá a usar ese mismo DB para la siguiente ejecución. Siempre que su esquema cambie, simplemente configure REUSE_DB = 0 y realice una ejecución 'completa'. Después de eso, reinícialo a 1 y listo.

https://github.com/django-nose/django-nose

Cuestiones relacionadas