PythonユニットテストのassertAlmostEqual-floatのコレクションのテスト
PythonのユニットテストフレームワークのassertAlmostEqual(x、y)メソッドは、とが浮動小数点数であると仮定してほぼ等しいかどうかをテストします。xy の問題assertAlmostEqual()は、フロートでのみ機能することです。assertAlmostEqual()フロートのリスト、フロートのセット、フロートの辞書、フロートのタプル、フロートのタプルのリスト、フロートのリストのセットなどで機能するような方法を探しています。 たとえば、みましょうx = 0.1234567890、y = 0.1234567891。xそしてy、彼らは最後のものを除き、それぞれ、すべての桁に同意するので、ほぼ等しくなっています。したがってself.assertAlmostEqual(x, y)あるTrueので、assertAlmostEqual()フロートのための作品。 assertAlmostEquals()次の呼び出しも評価する、より一般的なものを探していますTrue。 self.assertAlmostEqual_generic([x, x, x], [y, y, y])。 self.assertAlmostEqual_generic({1: x, 2: x, 3: x}, {1: y, 2: y, 3: y})。 self.assertAlmostEqual_generic([(x,x)], [(y,y)])。 そのような方法はありますか、それとも自分で実装する必要がありますか? 明確化: assertAlmostEquals()名前付きのオプションのパラメータがplacesあり、小数点以下の桁数に丸められた差を計算することによって数値が比較されますplaces。デフォルトではplaces=7、したがって、self.assertAlmostEqual(0.5, 0.4)はFalseですが、self.assertAlmostEqual(0.12345678, 0.12345679)はTrueです。私の投機assertAlmostEqual_generic()は同じ機能を持っているはずです。 2つのリストがまったく同じ順序でほぼ等しい数である場合、それらはほぼ等しいと見なされます。正式には、for i in range(n): self.assertAlmostEqual(list1[i], list2[i])。 同様に、2つのセットは、(各セットに順序を割り当てることによって)ほぼ等しいリストに変換できる場合、ほぼ等しいと見なされます。 同様に、各辞書のキーセットが他の辞書のキーセットとほぼ等しい場合、2つの辞書はほぼ等しいと見なされ、そのようなほぼ等しいキーペアごとに、対応するほぼ等しい値があります。 一般的に:2つのコレクションは、互いにほぼ等しい対応するフロートを除いて、等しい場合はほぼ等しいと見なします。言い換えれば、私は実際にオブジェクトを比較したいのですが、途中でフロートを比較するときは精度が低く(カスタマイズされています)。