Сейчас я делаю юнит-тесты для уже существующего кода.Я столкнулся со следующей проблемой:
После запуска syncdb для создания тестовой базы данных Django автоматически заполняет несколько таблиц, таких как django_content_type или auth_permissions.
Затем представьте, что мне нужно выполнить сложный тест, например проверитьрегистрация пользователей, для чего понадобится большое количество таблиц данных и соединений между ними.
Если я попытаюсь использовать всю свою существующую базу данных для изготовления приборов (это было бы довольно удобно для меня) - я получуошибка типа здесь .Это происходит потому, что Django уже заполнил таблицы, такие как django_content_type.
Следующий возможный способ - использовать параметр django dumpdata --exclude для уже заполненных таблицами syncdb.Но это также не очень хорошо работает, потому что, если я возьму объекты User и User Group из моей таблицы db и User Permissions, которая была автоматически создана syncdb, я могу получать ошибки, потому что первичные ключи, соединяющие их, теперь указывают неверно.Это лучше описать здесь в части «адский светильник», но показанное там решение выглядит не очень хорошо)
Следующая возможная схема, которую я вижу, следующая:
- Я провожу свои тесты;Django создает тестовую базу данных, создает syncdb и создает все эти таблицы.
- В моей настройке теста я удаляю эту базу данных, создавая новую пустую базу данных.
- Загрузка дампа данных из существующей базы данных также втестовая настройка