GeoDjango 应用测试

本文档包含一些针对PostGIS用户的其他说明和设置。

PostGIS

设置

注意

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

POSTGIS_VERSION

当 GeoDjango 的空间后端在 PostGIS 上初始化时,它必须执行一个 SQL 查询来确定版本,以便确定哪些功能可用。希望避免此额外查询的高级用户可以使用一个包含三个整数的元组手动设置版本,分别指定 PostGIS 的主版本、次版本和微版本号。例如,要配置 PostGIS X.Y.Z,可以使用

POSTGIS_VERSION = (X, Y, Z)

获取足够的权限

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

创建数据库用户

要创建一个具有创建数据库能力的数据库用户,请使用以下命令

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

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

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

postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

创建数据库超级用户

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

$ createuser --superuser <user_name>

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

postgres# ALTER ROLE <user_name> SUPERUSER;

Windows

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

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

GeoDjango 测试

要在使用runtests.py运行 Django 测试套件时执行 GeoDjango 测试,设置文件中的所有数据库都必须使用空间数据库后端之一。

示例

以下是一个使用空间后端的示例基本设置文件,可用于运行整个 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"

假设上述设置位于与runtests.py相同的目录下的postgis.py文件中,则执行以下命令时将执行所有 Django 和 GeoDjango 测试:

$ ./runtests.py --settings=postgis

要仅运行 GeoDjango 测试套件,请指定gis_tests

$ ./runtests.py --settings=postgis gis_tests
返回顶部