测试 GeoDjango 应用程序

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

PostGIS

配置

备注

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

POSTGIS_VERSION

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

  1. POSTGIS_VERSION = (X, Y, Z)

获得足够的权限

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

创建数据库普通用户

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

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

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

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

  1. postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

创建数据库超级用户

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

  1. $ createuser --superuser <user_name>

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

  1. postgres# ALTER ROLE <user_name> SUPERUSER;

Windows

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

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

GeoDjango 测试

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

例如

以下是一个示例的简单设置文件,其中包含可以用来运行整个 Django 测试套件的空间后端,包括 django.contrib.gis 中的测试:

  1. DATABASES = {
  2. "default": {
  3. "ENGINE": "django.contrib.gis.db.backends.postgis",
  4. "NAME": "geodjango",
  5. "USER": "geodjango",
  6. },
  7. "other": {
  8. "ENGINE": "django.contrib.gis.db.backends.postgis",
  9. "NAME": "other",
  10. "USER": "geodjango",
  11. },
  12. }
  13. SECRET_KEY = "django_tests_secret_key"

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

  1. $ ./runtests.py --settings=postgis

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

  1. $ ./runtests.py --settings=postgis gis_tests