Вызывается оригинальная функция вместо фиктивной - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь заметить функцию _read_device_beans в фиктивной функции BeanMock._read_device_beans, но вижу исходную функцию, вызывающую

@patch('configurator.DeviceConfigurator')
class DeviceConfigurator:
    def __init__(self, bean_map):
        self._bean_map = bean_map
        self._beans = None

Новый класс:

class BeanMock:    
    def __init__(self, index):
        self._beans = None
        self.index = index

Функция макета:

    @classmethod
    def _read_device_beans(self, parameters: L3InterfaceParameters):
      ...

Тестовый класс:

class TestManager(unittest.TestCase):
    def setUp(self):
        self.module_mock = MagicMock()

Тестовая функция:

    def test_l3if_read(self):
        connector = DeviceConnection()
        l3_interface_configurator = L3InterfaceConfigurator(connector)
        param = L3InterfaceParameters()

        with patch.dict('sys.modules', **{
             'configurator': self.module_mock,
             'configurator.l3_interface': self.module_mock,
             'configurator.DeviceConfigurator._read_device_beans':
              BeanMock._read_device_beans(param),
        });
            ...

            try:
                res_param = l3_interface_configurator._read(param)
                print(res_param)
                self.assertEqual(res_param, "incorrect index", "incorrect return wrong parameters")
            except Exception as e:
                print(e)
            assert True



class L3InterfaceConfigurator(Configurator):

    def __init__(self, connection):
        super(L3InterfaceConfigurator, self).__init__(bean_map, connection)

    def _read(self, parameters: L3InterfaceParameters) -> L3InterfaceParameters:
        self._read_device_beans(parameters)
        if self._beans:
            return parameters

class DeviceConfigurator(Configurator):
    __metaclass__ = ABCMeta
    READ = 'read'
    UPDATE = 'update'
    DEPLOY = 'deploy'
    DELETE = 'delete'
    READ_ALL = 'read_all'

    def __init__(self, bean_map):
        self._bean_map = bean_map
        self._beans = None
        log.info(' {0} initialized, server: {1}'.format(self.__class__.__name__, self.id))

    def _read_device_beans(self, parameters):
        ...
        self._struct_load(parameters)
...