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