Как смоделировать список внутри смоделированного объекта с помощью python unittest? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь вернуть список из объекта Mock, но не могу заставить его работать.

Вот код:

def execute_call(model, payload):
    result = model.execute(payload)
    code = result[0]

Вот тест, который я пробовал:

def test_get_code(self, session):
    execute_call = Mock()
    execute_call.return_value = ['123', '123', '123']
    session.return_value = Mock(execute=execute_call)

Результат:

code = result[0]
TypeError: 'Mock' object does not support indexing

Я не могу понять, как заставить результат [0] работать.'execute_call' должен быть фиктивным, но return_value должен быть списком.

Любая идея приветствуется.

1 Ответ

0 голосов
/ 03 апреля 2019
def execute_call(model, payload):
    result = model.execute(payload)
    code = result[0]

def test_execute_call(self):
    mock_model = mock.MagicMock()
    mock_model.execute = mock.MagicMock(return_value=(a,b,c)
    self.execute_call(mock_model, payload)
    assert whatever

Вам нужно передать фиктивный объект в функцию, чтобы его можно было использовать.

...