# Django 5.2.9 ドキュメント

# 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