GeoDjango アプリのテスト

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

PostGIS

設定

注釈

以下の設定には合理的なデフォルト値が設定されており、手動で設定する必要はありません。

POSTGIS_VERSION

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

POSTGIS_VERSION = (X, Y, Z)

適切な権限の取得

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

データベースユーザーを作成する

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

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

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

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

postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

データベースのスーパーユーザーを作成する

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

$ createuser --superuser <user_name>

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

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
Back to Top