Как запустить тест с миграцией 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 просто создаст вашу тестовую базу данных на основе ваших текущих моделей, а не запустит миграцию для ее построения.