Отключить Django South при запуске модульных тестов?

Отключить Django South при запуске модульных тестов? Как избежать запуска всех южных миграций при модульном тестировании django?


person MikeN    schedule 27.04.2011    source источник
comment
Мне интересно, почему это важно? Он запускает эти миграции в тестовой базе данных при выполнении тестов. Хотя, если вы удалите south из INSTALLED_APPS, вы можете запретить выполнение его тестов.   -  person Torsten Engelbrecht    schedule 27.04.2011
comment
@Torsten У меня есть вариант использования, который требует этого: у меня есть сторонний модуль, в котором есть модель с ForigenKey для моего класса User. Однако у меня есть пользовательское поле pk в файле User. Следовательно, когда я запускаю тест и выполняется миграция 0001_initial для этого стороннего модуля, он создает ограничение в тестовой базе данных с неправильным именем поля для таблицы user. Вот почему мне нужно отключить миграцию при запуске модульного тестирования.   -  person OrPo    schedule 27.05.2013


Ответы (2)


Да, южная документация описывает, как это сделать, но в основном просто добавьте это в свои настройки. .py-файл:

SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead
SKIP_SOUTH_TESTS = True # To disable South's own unit tests
person Andrew C    schedule 27.04.2011
comment
Это не отключит юг от запуска миграций, он только представит югу от запуска собственных модульных тестов. См. сообщение kiddouck о том, как отключить все южные миграции при выполнении модульного тестирования django. - person Philip Clarke; 20.09.2011
comment
Спасибо @ephesian, это исправлено. - person Andrew C; 20.09.2011

Несмотря на то, что вы выбрали правильный ответ, я думаю, что вам следует рассмотреть вариант SOUTH_TESTS_MIGRATE вместо этого. Это предотвратит запуск всех миграций в вашей тестовой базе данных и вместо этого запустит syncdb.

person kiddouk    schedule 18.05.2011