Django 1.7 представил миграцию баз данных .
При запуске модульных тестов в Django 1.7 он вызывает миграцию , которая занимает много времени. Поэтому я хотел бы пропустить миграции django и создать базу данных в конечном состоянии.
Я знаю, что игнорирование миграций может быть плохой практикой, поскольку эта часть кода не будет проверяться. Но это не так: я выполняю полные миграции на тестовом сервере CI (jenkins). Я только хочу пропустить миграции в моих локальных тестах, где важна скорость.
Некоторый контекст:
До Django 1.6 при использовании South я использовал настройку SOUTH_TESTS_MIGRATE :
По умолчанию команда South syncdb также применяет миграции, если она выполняется в неинтерактивном режиме, в том числе, когда вы выполняете тесты - она будет запускать каждую миграцию каждый раз, когда вы запускаете свои тесты.
Если вы хотите, чтобы средство выполнения тестов использовало syncdb вместо миграции - например, если ваши миграции слишком долго применяются - просто установите SOUTH_TESTS_MIGRATE = False в settings.py.
Однако syncdb больше не существует, теперь он переносится .
А из Django 1.8 я буду использовать параметр --keepdb :
Параметр --keepdb можно использовать для сохранения тестовой базы данных между тестовыми запусками. Это дает то преимущество, что пропускаются действия create и destroy, что значительно сокращает время выполнения тестов, особенно в большом наборе тестов. Если тестовая база данных не существует, она будет создана при первом запуске, а затем сохранена для каждого последующего запуска. Любые непримененные миграции также будут применены к тестовой базе данных перед запуском набора тестов.
Итак, этот вопрос ограничен Django 1.7.
django-test-without-migrations
Пакет был очень удобно для меня, вы можете захотеть изменить принятый ответ на stackoverflow.com/a/28993456/200224