django-nose を使用して、django (1.4) で単体テストを実行しています。
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
データベースの作成には時間がかかります。
それで、これをsettings.pyに入れることがわかりました:
os.environ['REUSE_DB'] = "1"
トリックを行う必要があります。
実際に django itsellve はこの提案をします:
To reuse old database "<path not very interesting>/var/sqlite/unittest.db" for speed, set env var REUSE_DB=1.
もちろん、このフラグ =0 を使用して一度 (またはデータベースの変更ごとに) 実行する必要があります
ただし、フラグを 0 に設定すると、私のテストは次のコメントで終了します。
Destroying test database for alias 'default'...
したがって、再利用して実行したい場合....再利用するものは何もありません...そして、テーブルが存在しないというエラーが表示されます
DatabaseError: no such table: <and than a table name>
reuse_db を 0 に設定すると、テストは完全に実行されます
開発設定で test データベース エイリアスを使用しています。
DATABASES = {
'default': {
'NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'development.db'),
'TEST_NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'unittest.db'),
'ENGINE': 'django.db.backends.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
これはdjango-noseではうまく機能しないとどこかで読んだので、テストにインメモリsqlliteデータベースを使用していません。
では、最終的にデータベースを破壊しているときに、どうすればDBを再利用できますか...
これによるとhttps://docs.djangoproject.com/en/1.4/topics/testing/#the-test-database django はこれを行っていますが、これを防ぐ方法 (できれば)、またはその方法を示していません。 reuse_db オプションを使用します。他の設定を使用する必要がありますか?