Я пытаюсь запустить тесты с данными приборов и получаю печально известную ошибку IntegrityError: column user_id is not unique
.
Теперь, глядя на мои приборы, я вижу, что идентификаторы моих пользовательских моделей в моем приборе уникальны между собой. Я предполагаю, что конфликт связан с существующими данными в (не тестовой) базе данных. Это верно? (Правка: это кажется неверным — см. ниже)
Я хочу иметь возможность точно контролировать, какие данные доступны для моих тестов. Есть ли способ запретить тестовому запуску django загружать данные из моей реальной базы данных, а также данные моих приборов? (Изменить: Да — см. ответ Тибо).
Редактировать: переход на использование чистой базы данных в памяти согласно ответу Тибо не решает проблему. Соответственно, я делаю вывод, что моя существующая база данных разработчиков не является проблемой.
Итак, у меня есть третий вопрос: Как диагностировать причину ошибки IntegrityError при загрузке фикстур во время тестирования? (И как ее исправить?)
Редактировать 2: Решение моей проблемы, в дополнение к началу с чистой базы данных (согласно Тибо J), также заключалось в исключении моделей из установленных приложений, ссылающихся на пользователя, до тех пор, пока ошибка не исчезнет.
Другое предложение DrTyrsa (помимо просмотра данных) заключалось в использовании естественных ключей., что для Пользователя, несомненно, потребовало бы определенного количества исправлений или других хакерских действий (редактировать код для Пользователя?).
User
, это проблема какой-то другой модели, которая используетForeignKey
доUser
. - person DrTyrsa   schedule 07.12.2011setUp
, но это не очень поможет, если у вас их много. Или вы можете просто внимательно изучить свои приборы и найти причину ошибки. - person DrTyrsa   schedule 07.12.2011