Тестирование приложений GeoDjango
В данном документе содержатся дополнительные заметки и настройки для пользователей PostGIS и SpatiaLite.
PostGIS
Настройки
Примечание
Указанные ниже настройки имеют разумные значения по умолчанию и, как правило, не требуют ручного изменения.
POSTGIS_TEMPLATE
Эта настройка может использоваться для настройки имени шаблона базы данных PostGIS, которая будет использоваться. По умолчанию автоматически устанавливается значение 'template_postgis' (то же имя, что и в документации по установке).
POSTGIS_VERSION
При инициализации пространственного бэкенда GeoDjango на PostGIS необходимо выполнить запрос SQL для определения версии, чтобы выяснить, какие функции доступны. Развитые пользователи, желающие избежать этого дополнительного запроса, могут вручную установить версию, используя 3-кортеж целых чисел, определяющих основные, второстепенные и микроверсии PostGIS. Например, чтобы настроить PostGIS X.Y.Z, используйте:
POSTGIS_VERSION = (X, Y, Z)
Получение достаточных привилегий
В зависимости от вашей конфигурации, этот раздел описывает несколько методов настройки пользователя базы данных с достаточными привилегиями для запуска тестов приложений GeoDjango в PostgreSQL. Если ваш шаблон пространственной базы данных был создан как в инструкциях, то пользователю вашей тестовой базы данных достаточно возможности создавать базы данных. В других конфигурациях может потребоваться использовать суперпользователя базы данных.
Создать пользователя базы данных
Чтобы создать пользователя базы данных с возможностью создания баз данных, используйте следующую команду:
$ 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;
Создание базы данных с использованием PostGIS версии 2
При тестировании проектов с использованием PostGIS 2, тестовая база данных создается с использованием инструкции CREATE EXTENSION postgis, при условии, что в текущей базе данных не существует шаблон template_postgis (или именованный в соответствии с POSTGIS_TEMPLATE).
Windows
На платформах Windows утилита pgAdmin III также может быть использована как простой способ добавления привилегий суперпользователя вашему пользователю базы данных.
По умолчанию установщик PostGIS на Windows включает шаблон пространственной базы данных под названием template_postgis.
SpatiaLite
Убедитесь, что необходимые пространственные таблицы созданы в вашей тестовой пространственной базе данных, как описано в Создание пространственной базы данных для SpatiaLite. Затем просто сделайте следующее:
$ python manage.py test
Тесты GeoDjango
Чтобы тесты GeoDjango выполнялись при запуске набора тестов Django с runtests.py, все базы данных в файле настроек должны использовать один из пространственных бэкэндов базы данных.
Пример
Следующий пример - это базовый файл настроек с пространственными бэкендами, который может быть использован для запуска всего набора тестов 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
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/contrib/gis/testing/