这里是名为__repr__
Grid
方法
def __repr__(self):
return 'Grid(%r, %r)' % (self.rows, self.cols)
我已经在unittest
模块中放了一些基本测试来检查eval
是否可以在没有失败的情况下进行相等测试,看起来像这样:
# One of the tests inside a unittest.TestCase subclass
def test_grid(self):
grid = Grid(3, 4)
self.assertEqual(eval(repr(grid)), grid)
现在,这是测试报告(我已将此测试与其他人隔离):
======================================================================
FAIL: test_grid (tests.test_core.TestCore)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/user/Desktop/sample/tests/test_core.py", line 14, in test_grid
self.assertEqual(eval(repr(grid)), grid)
AssertionError: Grid(3, 4) != Grid(3, 4)
----------------------------------------------------------------------
Ran 1 test in 0.003s
FAILED (failures=1)
Assertion异常消息让我更加困惑。是不是Grid(3, 4) != Grid(3, 4)
应该是False
?
答案 0 :(得分:2)
我认为问题的核心是你正在创建一个新对象,即使里面的值是相同的 - python也不能说明它们是,所以它通过引用比较对象。他们是不同的。我相信你需要覆盖python的魔术比较运算符才能通过内部值进行比较。