测试geodjango应用程序

本文档中包含一些附加说明和设置 PostGIS 用户。

PostGIS

设置

备注

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

POSTGIS_VERSION

当geodjango的空间后端在postgis上初始化时,它必须执行一个SQL查询来确定版本,以便找出可用的特性。希望阻止此附加查询的高级用户可以使用指定PostGIS的主版本号、次版本号和微版本号的三元组手动设置版本。例如,要配置postgis x.y.z,您将使用:

POSTGIS_VERSION = (X, Y, Z)

获得足够的特权

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

创建数据库用户

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

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

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

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

postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

创建数据库超级用户

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

$ createuser --superuser <user_name>

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

postgres# ALTER ROLE <user_name> SUPERUSER;

Windows

在Windows平台上,可以使用pgAdmin III实用程序向数据库用户添加超级用户权限。

默认情况下,Windows上的PostGIS安装程序包含一个名为 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