测试 GeoDjango 应用程序 — Django 文档
测试 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