构造函数中的Magic Mock函数

时间:2019-06-30 16:24:03

标签: python testing mocking

我正在编写测试,在其中创建构造函数。
这个构造函数有一个参数,我在里面传递了一个Mock。
但是除了这个参数之外,参数内部还有另一个函数,我不确定如何让构造函数将其视为Mock。
这是一个简单的示例:

Class MyClass():
    def __init__(self, var):
        self._var = var
        self._func()
        # Other stuff, I actually care about and can easily check **

现在,如果我在测试中将var作为参数传递,则很容易处理:

def test_trying_mock(self):
    var = MagicMock()
    object = MyClass(var)

然后处理var行。如何使构造函数将func视为模拟,并使它跳过我实际想要运行并检查的部分?

1 个答案:

答案 0 :(得分:0)

经过研究,我发现了如何做:

在测试类的set_up下,我添加了self._mock_func()
set_up之外,我是这样实现此功能的:

def _mock_func(self):
    class_path = ' [path to MyClass] '
    self._func_mock = self.mock_object('_func', path= class_path)

然后,当构造函数运行时,它将为该函数提供模拟并继续运行。