我正在尝试使用 pytest-mock 来模拟 self 方法。
只是我的班级有一个我想模拟的函数“距离”。
我想测试我的eq函数,如下所示:
def __eq__(self, other):
return self.distance() == other.distance()
我尝试这样的事情:
def test_eq(mocker):
i = mocker.MagicMock(Interval)
mocker.patch.object(i, 'distance', return_value=1)
i2 = mocker.MagicMock(Interval)
mocker.patch.object(i2, 'distance', return_value=1)
assert i == i2
但是这个回报:
AssertionError: assert <\MagicMock spec='Interval' id='140333310434384'> ==<\MagicMock spec='Interval' id='140333310558104'>
我也试过
mocker.patch.object(i, 'self.distance', return_value=1)
但这让我得到了一个 AttributeError,正如我对 MagicMock 所期望的那样。
修补我的对象自我方法的正确方法是什么?