---
title: "GeoDjango アプリのテスト"
version: 5.1
locale: ja
source: https://docs.djangoproject.com/ja/5.1/ref/contrib/gis/testing/
canonical: https://djangodocs.dev/ja/5.1/ref/contrib/gis/testing/
---
# GeoDjango アプリのテスト

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

## PostGIS

### 設定

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

#### `POSTGIS_VERSION`

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

```
POSTGIS_VERSION = (X, Y, Z)
```

### 適切な権限の取得

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

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

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

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

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

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

```psql
postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;
```

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

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

```shell
$ createuser --superuser <user_name>
```

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

```psql
postgres# ALTER ROLE <user_name> SUPERUSER;
```

### Windows

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

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

## GeoDjangoのテスト

`runtests.py` を使用して [Djangoテストスイートを実行する](/ja/5.1/internals/contributing/writing-code/unit-tests/#running-unit-tests) 際に GeoDjango テストを実行するには、設定ファイル内のすべてのデータベースが [空間データベースバックエンド](/ja/5.1/ref/contrib/gis/db-api/#spatial-backends) のいずれかを使用している必要があります。

### カスタマイズ例

次の内容は、Django テストスイート全体を実行するために使用できる、空っぽの設定ファイルの例です。この設定ファイルには、 [`django.contrib.gis`](/ja/5.1/ref/contrib/gis/#module-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 のテストが実行されます:

```shell
$ ./runtests.py --settings=postgis
```

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

```shell
$ ./runtests.py --settings=postgis gis_tests
```
