python test比较同一个类的2个对象

时间:2014-07-23 20:44:10

标签: python unit-testing oop equality nose

在测试中,我需要比较一个类的2个对象对每个类属性具有相同的值。我不需要在测试之外比较该类的2个对象。

在我的课程中实施 eq 是否更好(即使生产代码不需要它),或者只是比较每个 dict 更好我的测试中的对象?像这样:

assert_equals(obj1.__dict__, obj2.__dict__)

如果我在课堂上实现它,那么我可以说:

assert_equals(obj1, obj2)

2 个答案:

答案 0 :(得分:3)

当然,两者都有效,但我建议实施__eq__,因为:

  1. 成本低廉/不做太多工作
  2. 如果您将来某个时间点(或者如果其他人必须与他们一起工作),您的测试将更容易阅读。
  3. 良好的面向未来:__eq__方法可以继承,如果您已经需要评估测试中的相等性,那么您永远不会知道 - 您的生产代码可能将来很好地需要这个功能。

答案 1 :(得分:1)

__dict__并且遗产在这方面并不能很好地发挥作用。如果你想比较某些东西,并且确实比较有意义,那么我会说在课堂上实施 eq cmp