# Django 5.2.8 documentation

# 测试 GeoDjango 应用程序

本文档中还包括一些供 PostGIS 用户使用的附加注释和设置。

## PostGIS

### 配置

Note

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

#### `POSTGIS_VERSION`

当 GeoDjango 的空间后端在 PostGIS 上初始化时，必须执行一个 SQL 查询来确定版本，以便了解可用的功能。希望防止这个额外查询的高级用户可以手动设置版本，使用一个由整数三元组指定的 PostGIS 的主要、次要和微版本号。例如，要配置为 PostGIS X.Y.Z，您可以使用以下方式：

    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