测试 GeoDjango 应用程序 — Django 文档

来自菜鸟教程
Django/docs/2.2.x/ref/contrib/gis/testing
跳转至:导航、​搜索

测试 GeoDjango 应用程序

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

PostGIS

配置

笔记

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


POSTGIS_VERSION

当 GeoDjango 的空间后端在 PostGIS 上初始化时,它必须执行 SQL 查询来确定版本,以便找出可用的功能。 希望阻止此附加查询的高级用户可以使用指定 PostGIS 的主要、次要和微版本号的 3 元组整数手动设置版本。 例如,要配置 PostGIS XYZ,您将使用:

POSTGIS_VERSION = (X, Y, Z)

获得足够的权限

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

创建数据库普通用户

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

$ 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