フィクスチャのデータでテストを実行しようとしていて、悪名高いIntegrityError: column user_id is not unique
エラーが発生しています。Djangoテスト:(エラーの原因を診断することによって)唯一のフィクスチャデータとIntegrityErrorsを持たないデータベースを取得する方法は?
今、自分のフィクスチャを見てみると、私のフィクスチャの私のユーザモデルのIDはお互いにユニークであることがわかります。私は、衝突が(テストではない)データベースの既存のデータであると推測します。これは正しいです? (編集:これは間違っているようです - 下記を参照してください)
私のテストでは、どのデータが利用可能かを正確に制御できるようにしたいと考えています。 djangoテストランナーがライブデータベースからデータを読み込むのを防ぐ方法はありますか? (編集:はい - Thibautの答えを参照してください)。
編集: Thibautの回答に従ってメモリデータベースをクリーンに変更しても問題は解決されません。したがって、私は私の既存のdevデータベースが問題ではないと推測します。
私は3番目の質問があります。テスト中にフィクスチャをロードするときにIntegrityErrorの原因を診断するにはどうすればよいですか?(そして、私はそれをどのように修正すればよい?)
編集2:私の問題の解決策、(ティボーJあたり)クリーンデータベースで始まるに加えて、ユーザーを参照するインストール済みのアプリケーションからモデルを排除することでもありましたエラーが発生しなくなるまで繰り返す。
DrTyrsaの他の提案(データを見るより)はnatural keysを使用していましたが、ユーザーには疑いなく一定量のサルパッチやその他のハッカーが必要です(ユーザーのコードを編集してください)。
それはあなたの 'User'モデルの問題ではない、それはUser''へ 'ForeignKey'を使用して、いくつかの他のモデルの問題です。 – DrTyrsa
@DrTyrsa:あなたが正しいと思う(私のアップデートを一瞬で見てください)。これを診断/修正する方法を拡張してもよろしいですか? – Marcin
あなたの什器やモデルを見なくても答えるのは難しいです。確かに問題を解決するのは、[自然キー](https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys)です。しかし、それを実装するには時間がかかるでしょう。もう一つのオプションは、 'setUp'メソッドで多くの関係を持つオブジェクトを作成することですが、たくさんある場合はあまり役に立ちません。あるいは、灯具を慎重に調べて、エラーの原因を突き止めることができます。 – DrTyrsa