繁体   English   中英

重写基类的方法时该如何模拟它?

[英]How to mock a base class's method when it was overridden?

我有类似的代码:

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 但是,我找不到解决方法。 如果该方法不会被子类覆盖,这很容易,正如Need在python测试案例中模拟一些基类行为所指出的。 但是,就我而言,这是相同的方法,那么我该怎么办?

您可以使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM