python 测试比较两个同类对象

1 投票
2 回答
2890 浏览
提问于 2025-04-18 14:30

在一个测试中,我需要比较两个同类对象的每个属性值是否相同。我并不需要在测试之外比较这两个对象。

我是在我的类里面实现eq方法更好(虽然生产代码不需要这个),还是在测试中直接比较每个对象的dict更好呢?像这样:

assert_equals(obj1.__dict__, obj2.__dict__)

如果我在类里面实现了这个方法,那么我就可以直接这样说:

assert_equals(obj1, obj2)

2 个回答

2

在这个方面,__dict__ 和继承的关系不是很好。如果你想要比较一些东西,并且真的想确保这个比较是有意义的,那么我建议你在这个类里面实现 eqcmp 方法。

4

当然,两种方法都可以用,但我建议你实现 __eq__ 方法,原因有以下几点:

  1. 成本低 / 不需要太多工作
  2. 如果你将来再回来看这些测试,或者别人需要使用这些测试,你会发现它们更容易理解
  3. 这对未来是个保障:__eq__ 方法可以被继承,如果你已经在测试中需要判断相等性,那么将来你的生产代码可能也会需要这个功能。

撰写回答