Мы изменили нашу базу данных, используя миграции django (django v1.7 +). Данные, существующие в базе данных, более не действительны.Как отключить миграцию базы данных django?
В принципе, я хочу протестировать миграцию внутри встроенной базы данных предварительной миграции, добавив некоторые данные, применяя миграцию, а затем подтвердив, что все прошло гладко.
Как один:
сдерживаться новую миграцию при загрузке UnitTest
я нашел some stuff о перекрывая
settings.MIGRATION_MODULES
, но не мог понять, как использовать его. Когда я проверяюexecutor.loader.applied_migrations
, он все еще перечисляет все. Единственный способ предотвратить новую миграцию - удалить файл; не решение, которое я могу использовать.создать запись в базе данных UnitTest (используя старую модель)
Если мы сможем предотвратить миграцию, то это должно быть довольно просто.
myModel.object.create(...)
применять миграцию
Я думаю, что я, вероятно, может решить эту проблему сейчас, когда я нашел test_executor: установить план, указывающий на файл миграции и выполнить его? Хм, да? Есть какой-либо код для этого :-D
подтверждени старые данные в базе данных теперь соответствует новой модели
Опять же, я ожидаю, что это должно быть довольно легко: просто принести экземпляр, созданный перед миграцией и подтвердить изменился всеми правильными способами.
Таким образом, проблема на самом деле просто разработка как предотвратить UnitTest от применения последней миграции сценарий, а затем применять его, когда мы готовы?
Возможно, у меня неправильный подход? Должен ли я создавать светильники и просто подтвердить, что все они хороши в конце? Устанавливаются ли приборы до того, как миграция будет применена, или после того, как все будет сделано?
С помощью MigrationExecutor
и выбрать конкретные миграции с .migrate
я был в состоянии, может быть ?, откатить в определенное состояние, затем накат один за одним. Но это вызывает сомнения; в настоящее время преследует SQL-аут из-за отсутствия фактической инструкции ALTER TABLE. Жюри вышло.
Система управления версиями может помочь в этой ситуации. Вам нужно будет поддерживать две ветви со старыми и новыми переходами. Он похож на случай, когда у вас есть отдельные ветви для среды разработки и разработки с различными настройками, кодом и т. Д. – xyres
@xyres, проверяющий различные коммиты, обычно не подпадает под сферу действия unittest. –