这是我的单位代码:
def testExtractObject(self):
self.maxDiff = None
objects = Script("compare.py").extractObjects()
self.assertListEqual([Object('ClassA',2,5,None),
Object('ClassB',1,3,None),
Object('ClassC',0,2,None)], objects)
这是失败消息:
AssertionError: Lists differ: [Object(name='ClassA', meth... != [Object(name='ClassA', meth...
First differing element 0:
Object(name='ClassA', methods=2, lines=5, description=None)
Object(name='ClassA', methods=2, lines=5, description=None)
[Object(name='ClassA', methods=2, lines=5, description=None),
Object(name='ClassB', methods=1, lines=3, description=None),
Object(name='ClassC', methods=0, lines=2, description=None)]
我无法弄清楚这个消息之间的区别是什么,有人对此有所了解吗?
答案 0 :(得分:2)
你必须告诉python如何确定两个对象是否相等。您可以通过向班级添加__eq__
功能
class SomeObject(object):
def __eq__(self, other):
return self.a == other.a and self.b == other.b
然后通过此测试的对象将被视为相等。默认情况下,对象的相等性测试是left is right
,只有当它们是同一个对象时才是真的,而不是具有相同值的两个对象。