测试 GeoDjango 应用程序
本文档中还包括一些供 PostGIS 用户使用的附加注释和设置。
PostGIS
配置
备注
下面的设置具有合理的默认值,不应需要手动设置。
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