GeoDjango アプリのテストLink to this heading

このドキュメントには、PostGIS ユーザのための追加の注意事項と設定が含まれています。

PostGISLink to this heading

設定Link to this heading

POSTGIS_VERSIONLink to this heading

GeoDjango の空間バックエンドが PostGIS 上で初期化されるとき、どの機能が利用可能かを調べるために、SQL クエリを実行してバージョンを調べる必要があります。この追加クエリを防ぎたい上級ユーザは、PostGIS のメジャー、マイナー、マイクロのバージョン番号を指定する整数の 3タプルを使って、バージョンを手動で設定できます。例えば、PostGIS X.Y.Z を設定するには次のようにします:

Code
POSTGIS_VERSION = (X, Y, Z)

適切な権限の取得Link to this heading

設定によりますが、このセクションで、PostgreSQL 上の GeoDjango アプリケーションのテストを実行するために必要な権限を持ったデータベースユーザを構成するための複数の方法が説明されています。もし、指示通りに 空間データベーステンプレート が作成されている場合、テスト用のデータベースユーザはデータベースを作成する機能のみを持っていれば十分です。他の設定では、データベーススーパーユーザを使用する必要があるかもしれません。

データベースユーザーを作成するLink to this heading

データベースを作成する権限を持つデータベースユーザーを作成するには、次のコマンドを使用します:

Shell
$ createuser --createdb -R -S <user_name>

-R -S フラグは、ユーザーに追加のユーザー (ロール) を作成させたり、スーパーユーザーになる権限を持たせたくないことを示しています。

代わりに、既存のユーザーのロールをSQLシェルから変更することもできます (既存のスーパーユーザーアカウントから実行されているとして):

SQL
postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

データベースのスーパーユーザーを作成するLink to this heading

これは、たとえばユーザー作成時に行うことができます:

Shell
$ createuser --superuser <user_name>

あるいは、SQLシェルからユーザのロールを変更することもできます (既存のスーパーユーザアカウントから行われると仮定して):

SQL
postgres# ALTER ROLE <user_name> SUPERUSER;

WindowsLink to this heading

Windows プラットフォームでは、pgAdmin III ユーティリティを使用して、データベースユーザーにスーパーユーザー権限を追加できます。

デフォルトでは、Windows 上の PostGIS インストーラには template_postgis というタイトルのテンプレート空間データベースが含まれています。

GeoDjangoのテストLink to this heading

runtests.py を使用して Djangoテストスイートを実行する 際に GeoDjango テストを実行するには、設定ファイル内のすべてのデータベースが 空間データベースバックエンド のいずれかを使用している必要があります。

カスタマイズ例Link to this heading

次の内容は、Django テストスイート全体を実行するために使用できる、空っぽの設定ファイルの例です。この設定ファイルには、 django.contrib.gis に含まれるテストも含まれています:

Code
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 のテストが実行されます:

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

GeoDjango のテストスイートだけを実行するには、gis_tests を指定します:

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