Testing GeoDjango apps

本文档中包含PostGIS用户的其他注释和设置。

PostGIS

Settings

以下设置具有合理的默认值,不需要手动设置。

POSTGIS_VERSION

当GeoDjango的空间后端在PostGIS上初始化时,它必须执行SQL查询以确定版本,以便找出可用的功能。 希望防止此额外查询的高级用户可以使用整数的三元组手动设置版本,指定PostGIS的major,minor和micro版本号。 例如,要配置PostGIS X.Y.Z,您将使用:

POSTGIS_VERSION = (X, Y, Z)

Obtaining sufficient privileges

根据您的配置,本节介绍几种方法来配置具有足够权限的数据库用户在PostgreSQL上运行GeoDjango应用程序的测试。 如果您按照说明创建了spatial database template,那么测试数据库用户只需要具有创建数据库的能力。 在其他配置中,可能需要使用数据库超级用户。

Create database user

要使数据库用户能够创建数据库,请使用以下命令:

$ createuser --createdb -R -S <user_name>

-R -S标志表示我们不希望用户能够创建其他用户(角色)或成为超级用户。

或者,您可以从SQL shell更改现有用户的角色(假设这是从现有的超级用户帐户完成的):

postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

Create database superuser

这可以在创建用户时完成,例如:

$ createuser --superuser <user_name>

或者,您可以从SQL shell(假设这是从现有的超级用户帐户完成)更改用户的角色:

postgres# ALTER ROLE <user_name> SUPERUSER;

Windows

在Windows平台上,pgAdmin III实用程序也可以用作向数据库用户添加超级用户权限的简单方法。

默认情况下,Windows上的PostGIS安装程序包括名为template_postgis的模板空间数据库。

GeoDjango tests

要在running the Django test suiteruntests.py时执行GeoDjango测试,设置文件中的所有数据库必须使用spatial database backends

Example

以下是具有空间后端的示例裸机设置文件,可用于运行整个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