Django の default を使用している場合TestCase
、すべてのテストはトランザクションで実行され、テストが終了するとロールバックされます。データベースがトランザクションをサポートしている場合、何もクリーンアップする必要はありません。
Django のLiveServerTestCase
またはを使用している場合TransactionTestCase
、各テストの後にすべてのテーブルが切り捨てられ、テスト前にシリアル化された初期データがテスト データベースに再ロードされます。これにより、移行されたアプリのデータは保持されず、移行されていないアプリのみが保持されます。
この--keepdb
オプションは、データベースに対して特別なことは何もしません。テスト データベースが破棄されるのを防ぐだけで、テストの開始時にデータベースが見つかった場合は、新しいデータベースを作成する代わりにそのデータベースが使用されます。したがって、テストが終了したときに何らかの形でデータベースに残っているデータは、初期データと見なされます。これは、なんらかのエラーまたはユーザーの割り込みにより、トランザクションのないテストでデータベースをクリーンアップできない場合に最も関連します。その場合、データベースを再作成することをお勧めします。