測試 GeoDjango 應用程式¶
此文件中包含一些針對 PostGIS 使用者的額外注意事項和設定。
PostGIS¶
設定¶
注意
以下的設定都有合理的預設值,不應需要手動設定。
POSTGIS_VERSION
¶
當 GeoDjango 的空間後端在 PostGIS 上初始化時,它必須執行一個 SQL 查詢以確定版本,以便找出有哪些功能可用。希望避免此額外查詢的高階使用者可以手動設定版本,使用一個 3 個整數的元組來指定 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