Как мне исправить объект, импортированный другим файлом Python? - PullRequest
0 голосов
/ 25 января 2019

Пример abc.py:

from pack.def import Def

class Abc(object):
    def f(self):
        return Def().response()

Пример test_abc.py

from unittest import mock, TestCase
from pack.abc import Abc

class TestAbc(TestCase):
    @mock.patch('pack.def.Def')
    def test_f(self, mock_def):
        responses = ['response1', 'response2', 'response3']
        mock_def.return_value.response.return_value = responses
        assert responses == Abc().f()

Я предположил, что фиктивная защита была исправлена, но я делаю что-то не так, кто-то знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 29 января 2019

Вы должны издеваться над объектом, над которым вы работаете.Вы используете Def, который принадлежит pack.def в модуле abc .Когда вы пишете тест для класса Abc и хотите смоделировать вызовы Def, вы должны смоделировать Def, импортированный в abc , а не из исходного модуля.

Использование@mock.patch('pack.abc.Def') вместо @mock.patch('pack.def.Def').

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