#django #postgresql #django-unittest
#django #postgresql #django-unittest
Вопрос:
У меня есть проект django, который использует postgres db с несколькими UDFS. UDFS написаны на plpythonu. Поскольку plpyhtonu является ненадежным языком, только суперпользователи базы данных могут использовать его для создания UDFS. Это создает серьезную проблему, поскольку у меня нет возможности программно создать их в наборе тестов. Прямо сейчас я вижу два варианта:
- Измените django.db.backends.creation._create_test_db для создания тестовой базы данных из шаблона, в который уже загружены мои UDFS. Это кажется хакерским и трудоемким в обслуживании.
- Создайте суперпользователя с аутентификацией MD5 и загрузите UDFS в набор тестов с помощью psycopg2. Это кажется небезопасным.
Есть ли менее ужасные способы, которыми я могу это сделать?
Спасибо.
Ответ №1:
Я не знаю модель PG UDF, только MySQL и SQLite. Несколько других обходных путей могут быть:
- Создайте экземпляр PG, который вы используете только для тестирования, изолированный, чтобы потенциальные проблемы безопасности не вызывали беспокойства. В конце концов, базы данных дешевы.
- Если UDFS просты (или размер тестовых данных делает их простыми), воссоздайте их в SQLite и используйте эту базу данных для тестирования. Это предполагает, что вам не нужно тестировать функциональность plpython как часть проекта.
- Если функциональность UDF намного более стабильна, чем в остальной части проекта, тогда разделите код UDF на его собственный подпроект, а для остальной части кода предположите, что UDFS будет присутствовать. По крайней мере, это позволит автоматизировать большую часть кода, и только UDF-код нуждается в ручном вмешательстве для указания пароля.
Ответ №2:
Я выбрал # 1. Это не идеально, но работает нормально.