アプリケーションをテストしていますが、問題が発生していますが、その理由がわかりません。テスト用にフィクスチャをロードしていますが、フィクスチャには相互に依存する外部キーがあります。それらは特定の順序でロードする必要があります。そうしないと機能しません。
私がロードしているフィクスチャは次のとおりです。
["test_company_data", "test_rate_index", 'test_rate_description']
会社のデータは最初のものです。test_rate_indexには会社への外部キーがあり、test_rate_descriptionにはtest_rate_indexで宣言されたモデルへの外部キーがあります。(余談ですが、テストごとに異なるフィクスチャが必要です。そのため、すべてを1つにまとめるだけではありません)
テストのロードにdjangoの標準手順を使用すると、テストが適切な順序でロードされません。
クラスTestPackages(test.TestCase): フィクスチャ=["test_company_data"、 "test_rate_index"、 "test_rate_description"、]
メッセージが届きます
DoesNotExist:RateDescription一致クエリが存在しません。
しかし、フィクスチャの順序を逆にすると(意味がありません)、次のように機能します。
フィクスチャ=["test_rate_description"、 "test_company_data"、 "test_rate_index"、]
Djangoのドキュメントには、フィクスチャは宣言された順序でロードされると記載されていますが、そうではないようです。
回避策として、djangoを使用する代わりに
call_command('loaddata'、* Fixtures、** { 'verbosity':0、 'commit':False、 'データベース':'デフォルト' })
setUpメソッドで、フィクスチャを一度に1つずつロードする別の関数を使用しています。
def load_fixtures(fixtures): フィクスチャ内のフィクスチャの場合: call_command('loaddata'、フィクスチャ、** { 'verbosity':0、 'commit':False、 'データベース':'デフォルト' })
標準的な方法を使用しようとしたときに、フィクスチャが正しい順序でロードされない原因となっている、間違っている、または理解していないことがありますか?