2009-07-29 7 views
5

Estoy tratando de proporcionar integración a mi aplicación django desde la subversión a través del enganche post commit.no se pueden ver los registros insertados por django test case

Tengo un caso de prueba django (una subclase de unittest.TestCase) que (a) inserta un par de registros en una tabla, (b) genera un commit svn, (c) svn commit ejecuta un enlace que usa mi Modelo django para buscar información.

Estoy usando un sqlite3 db. La prueba es no usando la memoria: db, está usando un archivo real. Modifiqué el código de prueba de django (para depurar este problema) para evitar eliminar el db de prueba cuando está terminado para poder inspeccionarlo.

El código de prueba vuelca model.MyModel.objects.all() y los registros están allí entre (a) y (b).

Cuando el gancho se dispara en (c) también vuelca el modelo y no hay registros. Cuando inspecciono el db manualmente después de ejecutar la prueba, no hay registros.

¿Está pasando algo en el marco de prueba django que no está comprometiendo los registros con el archivo db?

Para aclarar: (d) finalizar el caso de prueba. Por lo tanto, el enlace svn commit se ejecuta antes de que finalice el caso de prueba, y antes de ejecutar cualquier código de limpieza de django db .

Información adicional: Agregué un retraso de 15 segundos entre (b) y (b) para poder examinar el archivo db manualmente en el medio de la prueba. Los registros no están en el archivo.

Respuesta

5

¿Está utilizando el baúl de Django? Los cambios recientes (Changeset 9756) ejecutan pruebas en una transacción que luego se retrotrae. Aquí está el registro de entrada comentario:

fijo # 8138 - El cambio de django.test.TestCase de revertir pruebas (cuando la base de datos lo soporta) lugar de descarga y recarga de la base de datos . Esto puede reducir sustancialmente el tiempo necesario para ejecutar conjuntos de prueba de grandes .

+0

Vinay, gracias. Tengo ese código en mi árbol. Forcé el soporte de transacciones a False y ahora la prueba está pasando. – bstpierre

+0

@bstpierre, ¿cómo forzaste el soporte de transacciones a False? – Greg

+0

@Greg por el aspecto del conjunto de cambios Probablemente use 'TransactionTestCase' en lugar de' TestCase', pero es una apuesta justa que algo de esto puede haber cambiado en los últimos 7 años, así que mmmv – bstpierre

0

El marco de prueba no guarda los datos en la base de datos, los datos se limpian una vez que las pruebas han finalizado.

Cuestiones relacionadas