如何模拟被重写的基类方法?
我有一段代码,差不多是这样的:
from mock import MagicMock
class Parent(object):
def test_method(self, param):
# do something with param
pass
class Child(Parent):
def test_method(self, param):
# do something Child-specific with param
super(Child, self).test_method(param)
现在我想确保 Child.test_method
这个方法会调用 Parent.test_method
。为此,我想使用 assert_called_once_with
,这是来自 mock 模块的一个功能。不过,我找不到办法来实现这一点。如果这个方法没有被子类覆盖,那就简单多了,正如这个链接所提到的那样。但是在我的情况下,这两个方法是一样的,那我该怎么办呢?
1 个回答
11
你可以使用 patch.object 这个功能:
with mock.patch.object(Parent, 'test_method') as mock_method:
child = Child()
mock_param = mock.Mock()
child.test_method(mock_param)
mock_method.assert_called_with(mock_param)