2011-04-27 16 views
41

¿Desactiva Django South cuando ejecuta pruebas unitarias? ¿Cómo se evita ejecutar todas las migraciones al sur cuando se realizan pruebas de la unidad django?¿Inhabilitar Django South cuando se ejecutan pruebas unitarias?

+0

Me pregunto por qué es esto importante? Está ejecutando estas migraciones en una base de datos de prueba al realizar pruebas. Sin embargo, si elimina 'sur' de INSTALLED_APPS puede evitar la ejecución de sus pruebas. –

+1

@Torsten Tengo un caso de uso que requiere esto: tengo un módulo de terceros que tiene un modelo con ForigenKey para mi clase 'User'. Sin embargo, tengo un campo pk personalizado en mi 'Usuario'. Por lo tanto, cuando ejecuto una prueba y se ejecuta la migración '0001_initial' para este módulo de terceros, crea una restricción en la base de datos de prueba con el nombre de campo incorrecto en la tabla' user'. Esta es la razón por la que necesito desactivar las migraciones cuando realizo pruebas unitarias. – OrPo

Respuesta

68

Sí, el South documentation describe cómo hacerlo, pero básicamente sólo tiene que añadir esto a su archivo settings.py:

SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead 
SKIP_SOUTH_TESTS = True # To disable South's own unit tests 
+0

Esto no desactivará las migraciones al sur, solo se presenta al sur de ejecutar sus propios tests de unidad. Consulte la publicación de kiddouck sobre cómo desactivar todas las migraciones al sur cuando se realizan pruebas de la unidad django. –

+0

Gracias @ephesian, está arreglado. –

31

A pesar de que, de haber seleccionado la buena respuesta, creo que usted debe considerar la Opción SOUTH_TESTS_MIGRATE en su lugar. Evitará ejecutar todas las migraciones en su prueba db, y en su lugar ejecutará syncdb.

Cuestiones relacionadas