Почему не получается запустить django testserver с fixtures?

Пытаюсь запустить тесты на рабочей базе. Сделал следующие действия:

./manage.py dumpdata --natural > dump.json
django-admin testserver dump.json


В ответ получаю
django.db.utils.IntegrityError: Problem installing fixture '/home/zuber/Projects/PCR/project/apps/bn/fixtures/real_db.json': Could not load contenttypes.ContentType(pk=1): UNIQUE constraint failed: django_content_type.app_label, django_content_type.model


В чём дело? Ведь база создаётся абсолютно пустой, откуда там contenttypes? Без contenttypes я не могу, потому, что тестирую permissions, которые привязаны к конкретным contenttypes
  • Вопрос задан
  • 1492 просмотра
Решения вопроса 1
Bahusss
@Bahusss
Python Master
При запуске тестов база не создается абсолютно пустой, т.к. Django выполняет несколько дополнительных шагов после выполнения syncdb или migrate (в новых версиях), например она вызывает метод update_contenttypes, который и заполняет табличку ContentTypes.

Вариантов решения проблемы несколько, но предлагаю дампить данные такой строчкой:
./manage.py dumpdata --natural -e contenttypes -e auth.Permission > dump.json

Таким образом вы исключите из фикстуры данные, которые и так создаются автоматически при каждом запуске тестов.

Для дальнейшего чтения рекомендую stackoverflow.com/questions/853796/problems-with-c...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Замените ключ --natural на --natural-foreign
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы