フィクスチャデータを使用してテストを実行しようとしていますが、悪名高いIntegrityError: column user_id is not unique
エラーが発生します。
ここで、フィクスチャを見ると、フィクスチャ内のユーザーモデルのIDが互いに一意であることがわかります。衝突は(非テスト)データベースの既存のデータとの衝突であると推測します。これは正しいです?(編集:これは正しくないようです-以下を参照してください)
テストで利用できるデータを正確に制御できるようにしたいと考えています。djangoテストランナーがライブデータベースからデータとフィクスチャデータをロードしないようにする方法はありますか?(編集:はい-Thibautの回答を参照してください)。
編集: Thibautの回答に従って、メモリ内のクリーンなデータベースを使用するように切り替えても、問題は解決しません。したがって、既存の開発データベースは問題ではないと推測します。
したがって、3番目の質問があります。テスト中にフィクスチャをロードするときにIntegrityErrorの原因を診断するにはどうすればよいですか?(そして、どうすれば修正できますか?)
編集2:私の問題の解決策は、クリーンなデータベース(Thibault Jによる)から始めることに加えて、エラーが発生しなくなるまで、ユーザーを参照するインストール済みアプリからモデルを削除することでもありました。
DrTyrsaの他の提案(データを見る以外)は、自然キーを使用することでした。これは、ユーザーにとって、ある程度のモンキーパッチやその他のハッカーが必要だったことは間違いありません(ユーザーのコードを編集しますか?)。