私はサブバージョンから投稿コミットフックまで私のdjangoアプリケーションへの統合を提供しようとしています。は、djangoテストケースによって挿入されたレコードを見ることができません
私は、(a)テーブルにいくつかのレコードを挿入し、(b)svnコミットを生成し、(c)svn commitが私を使用するフックを実行するというdjangoテストケース(unittest.TestCaseのサブクラス) djangoモデルは情報を検索する。
私はsqlite3 dbを使用しています。テストはではなく、を使用しています:memory:db、実際のファイルを使用しています。私はdjangoテストコードを修正して(この問題をデバッグするために)、テストDBを削除しないようにしています。
テストコードはmodel.MyModel.objects.all()をダンプし、レコードは(a)と(b)の間にあります。
(c)でフックが発生すると、モデルもダンプされ、レコードはありません。テストの実行後にDBを手動で検査すると、レコードはありません。
dbファイルにレコードをコミットしていないdjangoテストフレームワークに何か問題がありますか?
を明確にする:(d)テストケースを終了する。したがって、svn commitフックは、テストケースが終了する前、および任意のdjango dbクリーンアップコードの前に実行され、が実行されます。
追加情報:(b)と(b)の間に15秒の遅延を追加して、テストの途中で手動でdbファイルを調べることができました。レコードはファイルにありません。
Vinay、ありがとうございます。私はそのコードを私の木に持っています。私はトランザクションのサポートを偽に強制し、テストは合格となりました。 – bstpierre
@bstpierre、どのようにしてトランザクションのサポートを強制的にFalseにしましたか? – Greg
チェンジセットの外観から@Greg私はおそらく 'TestCase'の代わりに' TransactionTestCase'を使用しましたが、これは過去7年間にいくつか変更されているかもしれないという公正な賭けです – bstpierre