Django 1.7 ha introdotto le migrazioni del database .
Quando si eseguono gli unit test in Django 1.7, forza una migrazione , che richiede molto tempo. Quindi vorrei saltare le migrazioni di django e creare il database nello stato finale.
So che ignorare le migrazioni può essere una cattiva pratica, poiché quella parte del codice non verrebbe testata. Ma non è così: sto eseguendo le migrazioni complete nel server di test CI (jenkins). Voglio solo saltare le migrazioni nei miei test locali, dove la velocità conta.
Qualche contesto:
Fino a Django 1.6 , quando utilizzavo South, utilizzavo l' impostazione SOUTH_TESTS_MIGRATE :
Per impostazione predefinita, il comando syncdb di South applicherà anche le migrazioni se viene eseguito in modalità non interattiva, che include quando esegui i test: eseguirà ogni migrazione ogni volta che esegui i tuoi test.
Se vuoi che il test runner utilizzi syncdb invece di migrare, ad esempio se le tue migrazioni impiegano troppo tempo per essere applicate, imposta semplicemente SOUTH_TESTS_MIGRATE = False in settings.py.
Tuttavia, syncdb non esiste più, ora è migrato .
E da Django 1.8 userò il parametro --keepdb :
L'opzione --keepdb può essere utilizzata per preservare il database di test tra le esecuzioni di test. Questo ha il vantaggio di saltare sia le azioni di creazione che di distruzione, il che riduce notevolmente il tempo necessario per eseguire i test, specialmente quelli in una suite di test di grandi dimensioni. Se il database di test non esiste, verrà creato alla prima esecuzione e quindi conservato per ogni esecuzione successiva. Eventuali migrazioni non applicate verranno applicate anche al database di test prima di eseguire la suite di test.
Quindi questa domanda è limitata a Django 1.7.
django-test-without-migrations
pacchetto è stato davvero utile per me, potresti voler cambiare la risposta accettata a stackoverflow.com/a/28993456/200224