私はPythonで持っているプロジェクト用のテストスクリプトを書いたばかりですが、2つのオブジェクトの値が等しいかどうかの確認はfoo == bar
ほど簡単ではありません。例えば、私は属性としてパンダのデータフレームを持つオブジェクトdashboard
を持っているので、私はとその__eq__
メソッドを定義した:それは、各オブジェクトの辞書を比較し、これらの比較のいずれか以外の何かを得ている場合2つのオブジェクトの属性がPythonで同等であるかどうかをテストする一般的な方法はありますか?
def __eq__(self, other):
vals = [self.__dict__[k] == other.__dict__[k] for k in self.__dict__.keys()]
vals = [v if isinstance(v, bool) else all(v) for v in vals]
return all(vals)
それは単一のブール値に減らすためにall()
を適用するブール値(例えば、データフレーム)です。次に、all()
をこの属性比較リスト全体に適用して、self
とother
のすべての属性が同等かどうかをテストします。
私はこの__eq__
定義をいくつかのクラスで使用し、親テストクラスの比較メソッドにも同様のものを使用しました。私は働くためのテストを受けましたが、これを処理するよりエレガントで効率的な方法があれば私は興味があります。 (免責事項:テストは私にとって新しいもので、一般的にはOOPです。)
あなたは、テストの話をしている:あなたはユニットテスト、またはPytestなどのテストフレームワークを使用する必要があります。これらは、このようなことをするための機能が組み込まれています。 – MrE