測試 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
返回頂部