私は自分のアプリケーションを単体テストしています。ほとんどのテストは、特定の引数を使用して関数を呼び出し、戻り値と期待値が等しいことを表明します。
一部のテストでは、期待される戻り値は比較的大きなオブジェクトです。たとえば、そのうちの1つは、5つの文字列をタプルのリストにマップする辞書です。そのオブジェクトを定義するには、40〜50行のコードを繰り返す必要がありますが、そのオブジェクトは、私がテストしている関数の1つの期待値です。ほとんどのテスト関数は3〜6行のコードで構成されているため、テスト関数内で期待される戻り値を定義する40〜50行のコードは必要ありません。そのような状況でのベストプラクティスを探しています。テスト内に長い定義を入れる正しい方法は何ですか?
これが私が問題に対処するために考えていたアイデアであり、私が見ているように最高から最低までランク付けされています。
オブジェクトのサンプルのテスト:キーのサブセットに基づいていくつかの同等性アサーションを作成します。これは、コードの優雅さのためにテストの徹底性を犠牲にします。
別のモジュールでのオブジェクトの定義:別の.pyファイルに40〜50行の長いコードを記述し、テストでモジュールをインポートしてから、等価アサーションを作成します。これにより、テストは短く簡潔になりますが、テストの補足として別のファイルを用意するのは好きではありません。結局のところ、オブジェクト定義はテストの一部です。
テスト関数内でのオブジェクトの定義:これは、私が避けたい簡単な解決策です。私のテストは非常に単純で簡単であり、そのオブジェクトの長い定義は適合しません。
クリーンなコードに夢中になっているかもしれませんが、上記のソリューションはどれも好きではありません。私が考えていなかった別の一般的な習慣はありますか?