デフォルトでは、Djangoがsqliteバックエンドに対して実行されると、テスト用に新しいメモリデータベースが作成されます。つまり、unittest.TestCaseから派生するすべてのクラスについて、新しいデータベースを取得します。すべてのテストメソッドが実行される前にクリアされるようにこれを変更できますか?
例:Django永続オブジェクトの上に追加の抽象化を提供するマネージャークラスをテストしています。コードはもっと見えます-そのようにはなりません
class TestForManager(unittest.TestCase):
def testAddingBlah(self):
manager = Manager()
self.assertEquals(manager.getBlahs(), 0)
manager.addBlah(...)
self.assertEquals(manager.getBlahs(), 1)
def testAddingBlahInDifferentWay(self):
manager = Manager()
self.assertEquals(manager.getBlahs(), 0)
manager.addBlahInDifferentWay(...)
self.assertEquals(manager.getBlahs(), 1)
これで、2番目のテストの最初のアサーションは失敗します。これは、データベースの状態がテスト呼び出し間で保持されBlah
、データベースにのインスタンスがすでに存在するためです。