The model migrations are certainly a great feature of the Django framework. But, when it comes down to running tests, it really slows down the process. Especially if your migration history is big. This is a simple tip to speed up your tests.
I like to create a separate settings file for this tweaks.
tests_settings.pyfrom settings import * # Custom settings goes here
And then to run the tests:
python manage.py test --settings=myproject.tests_settings --verbosity=1
Django >= 1.9One option is using the MIGRATION_MODULES setting, which is intended to define a custom name for an app’s migration module. If you set None instead, Django will ignore the migration module.
from settings import * MIGRATION_MODULES = { 'auth': None, 'contenttypes': None, 'default': None, 'sessions': None, 'core': None, 'profiles': None, 'snippets': None, 'scaffold_templates': None, }
Django < 1.9This is a possible solution if you are using a version prior to 1.9. Actually, I still prefer to use it nowadays. Because I don’t need to set each app.
from settings import * class DisableMigrations(object): def __contains__(self, item): return True def __getitem__(self, item): return 'notmigrations' MIGRATION_MODULES = DisableMigrations()
Older Django Versions (using South)Hold tight:
SOUTH_TESTS_MIGRATE = False
Damn! It could even live inside the production settings.py .