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.py
from settings import *
# Custom settings goes here
And then to run the tests:
python manage.py test --settings=myproject.tests_settings --verbosity=1
Django >= 1.9
One 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.9
This 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.