で次のように設定された sqlite3 データベースを使用していますsettings.py
。
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': 'path/to/config.sqlite',
'TEST_NAME': 'path/to/test-config.sqlite',
# ... USER, PASSWORD and PORT left out for brevity
}
}
以下で開始されたテスト実行中:
python manage.py test myapp.mytest
path/to/test-config.sqlite
これにより、必要なフィクスチャをロードした別のアプリケーションで必要なデータベース ファイルが一時的に作成されます。
ただし、データベースファイルは空です。これは、あるテストで一時停止中にアサートしました。
sqlite> select * from someapp_somemodel;
... no results here :(
sqlite ファイルを必要とせず、メモリ内データベースで十分なその他のテスト ケースでは、エラーは発生しません。
私の質問:
- とにかくそれを作成する場合、なぜdjangoはそのデータをデータベースファイルにフラッシュしないのですか? と
- データを一時データベースファイルにダンプする必要があるため、djangoにそれを実行させるにはどうすればよいですか?
編集
興味があれば、私はDjango 1.3.1を使用しています。
EDIT2
私はフィクスチャに精通しており、それらを使用してデータベースにデータを入力していますが、私の問題は、テスト中にフィクスチャからのデータがデータベース ファイルに書き込まれないことです。その事実について十分に明確でなかったら申し訳ありません。
EDIT3
私の質問には明確な説明が必要なので、次のテスト設定を検討してください(これは私が実際に行っていることに近いものです):
class SomeTestCase(django.test.TestCase):
fixtures = ["some_fixture.json", "some_other_fixture.json"]
def testSomething(self):
import pdb; pdb.set_trace()
メソッドがtestSomething
ブレークポイントに達すると、プログラムを起動し、sqlite3
Django によって作成された一時データベース ファイルに接続します。フィクスチャはロードされます (他のテストも同様に機能するため、私は知っています) が、データは一時データベース ファイルに書き込まれません。