Тестирование приложений GeoDjango¶
В эту документацию включены некоторые дополнительные примечания и настройки для пользователей ПостГИС.
ПостГИС¶
Настройки¶
Примечание
Приведенные ниже настройки имеют разумные значения по умолчанию и не требуют ручной настройки.
POSTGIS_VERSION
¶
Когда пространственный бэкенд GeoDjango инициализируется на PostGIS, он должен выполнить SQL-запрос для определения версии, чтобы выяснить, какие функции доступны. Продвинутые пользователи, желающие избежать этого дополнительного запроса, могут установить версию вручную, используя 3 кортежа целых чисел, указывающих основной, основной и микро номера версии PostGIS. Например, для настройки PostGIS X.Y.Z вы можете использовать:
POSTGIS_VERSION = (X, Y, Z)
Получение достаточных привилегий¶
В зависимости от вашей конфигурации, в этом разделе описано несколько методов настройки пользователя базы данных с достаточными привилегиями для запуска тестов приложений GeoDjango на PostgreSQL. Если ваша spatial database template была создана так, как указано в инструкции, то пользователь базы данных для тестирования должен иметь только возможность создавать базы данных. В других конфигурациях вам может потребоваться использовать суперпользователя базы данных.
Создание пользователя базы данных¶
Чтобы создать пользователя базы данных с возможностью создания баз данных, используйте следующую команду:
$ createuser --createdb -R -S <user_name>
Флаги -R -S
указывают на то, что мы не хотим, чтобы пользователь имел возможность создавать дополнительных пользователей (роли) или быть суперпользователем, соответственно.
В качестве альтернативы, вы можете изменить роль существующего пользователя из оболочки SQL (предполагается, что это делается из существующей учетной записи суперпользователя):
postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;
Создание суперпользователя базы данных¶
Это может быть сделано в момент создания пользователя, например:
$ createuser --superuser <user_name>
Или вы можете изменить роль пользователя из оболочки SQL (предполагается, что это делается из существующей учетной записи суперпользователя):
postgres# ALTER ROLE <user_name> SUPERUSER;
Windows¶
На платформах Windows вы можете использовать утилиту pgAdmin III для добавления привилегий суперпользователя к пользователю базы данных.
По умолчанию программа установки PostGIS в Windows включает шаблон пространственной базы данных под названием template_postgis
.
Тесты GeoDjango¶
Чтобы тесты GeoDjango выполнялись при running the Django test suite с runtests.py
, все базы данных в файле настроек должны использовать один из spatial database backends.
Пример¶
Ниже приведен пример файла настроек с пространственными бэкендами, который можно использовать для запуска всего набора тестов Django, включая те, которые находятся в django.contrib.gis
:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': 'geodjango',
},
'other': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'other',
'USER': 'geodjango',
},
}
SECRET_KEY = 'django_tests_secret_key'
Если предположить, что приведенные выше настройки находятся в файле postgis.py
в том же каталоге, что и runtests.py
, то все тесты Django и GeoDjango будут выполняться при выполнении команды:
$ ./runtests.py --settings=postgis
Чтобы запустить только набор тестов GeoDjango, укажите gis_tests
:
$ ./runtests.py --settings=postgis gis_tests