GeoDjangoアプリのテスト—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/contrib/gis/testing
移動先:案内検索

GeoDjangoアプリのテスト

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

PostGIS

設定

ノート

以下の設定には適切なデフォルトがあり、手動設定は必要ありません。


POSTGIS_VERSION

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

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

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


GeoDjangoテスト

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

以下は、 django.contrib.gis にあるものを含む、Djangoテストスイート全体を実行するために使用できる空間バックエンドを備えた最低限の設定ファイルの例です。

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