2009-06-24 6 views
4

私は、Django testing docsの情報に従って、PostGISデータベース上で動作するDjangoアプリケーションをテストしようとしています。自動的にDjangoのテスト用にPostgisデータベースを作成するには?

通常、私は、テンプレートをコピーして新しいデータベースを作成します。

(postgresユーザとして)

createdb -T template_postgis -O lizard test_geodjango2 

私は./manage.py testを実行すると、私は次のメッセージが出ます:

がテストを作成しますデータベース... テストデータベースの作成中にエラーが発生しました:データベース作成の許可が拒否されました

タイプ「はい」あなたはキャンセルテストデータベース「test_geodjango2」を削除してみてくださいしたい、または「いいえ」>になる場合:

システムは、データベースを作成してみましょうするための最良の方法は何を?

+0

settings.pyファイルに関連するDATABASE ...パラメータを含めてください。 –

答えて

4

DATABASE_USERに新しいデータベース/スキーマを作成する権限がない可能性があります。


編集

あなたはDjangoのtestコマンドのソースを読めば、あなたはそれが常にテストデータベースを作成していることがわかります。さらに、このテストデータベースを参照するように設定を変更します。

この参照してください:あなたは何をすべきhttp://docs.djangoproject.com/en/dev/topics/testing/#id1

は使用fixturesです。ここで私たちはそれをやっています。

  1. "フィクスチャ"を作成します。 manage.py dumpdataコマンドを使用して、すべてのテンプレートデータを含むJSONファイルを作成します。 [ヒント、--indent=2オプションを使用すると、編集可能な読み取り可能なJSONが得られます]

  2. アプリケーションの下にfixturesディレクトリに入れます。

  3. TestCaseクラス定義のフィクスチャファイルを参照してください。これは、テストを実行する前にフィクスチャをロードします。

    class AnimalTestCase(TestCase): 
        fixtures = ['mammals.json', 'birds'] 
        def testFluffyAnimals(self): 
         etc. 
    

備品は、あなたのテンプレートデータベースを交換してください。フィクスチャを持っていればもうテンプレートは必要ありません。

+0

本当にそうです。しかし、私が権限を持っているユーザーを使用すると、結果のデータベースはおそらくPostgisデータベースではありませんか? (私はテンプレートからpostgisデータベースをコピーするので) –

2

S.Lottが述べたように、標準テストコマンドを使用してください。

postgisでgeodjangoを使用する場合は、空間テンプレートを正しく作成するために、以下の設定を設定に追加する必要があります。

の設定。PY

POSTGIS_SQL_PATH = 'C:\\Program Files\\PostgreSQL\\8.3\\share\\contrib' 
TEST_RUNNER='django.contrib.gis.tests.run_tests' 

コンソールここで説明

manage.py test 

http://geodjango.org/docs/testing.html?highlight=testing#testing-geodjango-apps

私はまだそれに見ていないが、私はこれを行うとき、私はときに、データベースのパスワードの入力を求められます必要なSQLをインストールしようとします。

関連する問題