我剛寫了一個python項目的測試腳本,我發現檢查兩個對象的值是否相等並不像foo == bar
那麼簡單。例如,我有一個對象dashboard
具有大熊貓數據幀作爲一個屬性,所以我定義其__eq__
方法爲:是否有一種測試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__
定義,並且在我的父類Test類中也使用了類似的比較方法。我讓我的測試工作,但我很好奇,如果有一個更優雅/有效的方式來處理這個問題。 (免責聲明:測試對我來說是新的,以及一般的OOP。)
你談論測試:你應該使用像單元測試,或Pytest測試框架;這些有很多內置函數來完成這種事情。 – MrE