Как запустить тест с миграцией appname --fake?

Мой тест не работает. Если я попробую имя приложения теста python manage.py, у меня будет эта ошибка:

! You *might* be able to recover with:   = DROP TABLE "appname_userprofile"; []
   = DROP TABLE "appname_table2"; []
   = DROP TABLE "appname_table3"; []

 ! The South developers regret this has happened, and would
 ! like to gently persuade you to consider a slightly
 ! easier-to-deal-with DBMS (one that supports DDL transactions)
 ! NOTE: The error which caused the migration to fail is further up.
Error in migration: content:0015_initial
django.db.utils.DatabaseError: table "appname_userprofile" already exists

Как запустить мой python manage.py test appname с

manage.py migrate appname --fake

1 ответ

Решение

Вы должны написать пользовательский тестовый бегун, чтобы выборочно добавить --fake на отдельные миграции, насколько я знаю.

Вам, вероятно, следует исправить миграции базы данных - похоже, у вас есть две миграции, которые пытаются создать одну и ту же таблицу.

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

Вы можете полностью отключить Юг для юнит-тестов, если вы добавите это в свой settings.py файл ( ссылка):

SOUTH_TESTS_MIGRATE = False

Если вы сделаете это, то тестер Django просто создаст вашу тестовую базу данных на основе ваших текущих моделей, а не запустит миграцию для ее построения.

Другие вопросы по тегам