Функция Magic Mock внутри конструктора - PullRequest
0 голосов
/ 30 июня 2019

Я пишу тест, в котором я создаю конструктор.
У этого конструктора есть один параметр, который я передаю в 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 голосов
/ 01 июля 2019

После некоторых исследований я узнал, как это сделать:

В классе тестирования под 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)

Затем, когда конструктор запустится, он будет проверять эту функцию и продолжать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...