python 3.6
Я пытаюсь установить вывод имитируемого элемента в виде строки, но у меня возникают ошибки. Обычно идея состоит в том, что вы используете mock.return_value
или mock.side_effect
, но у меня это не работает:
Script
def main():
config = Config(config_env)
print('the config ',config)
table = config.get(config_key,"table")
print(table)
Test
class TestMain:
@patch('path.Config')
def test_main_success(self, config_mock):
main()
Когда я запустите тест, первый результат будет the config < MagicMock name='Config()' id='123123'>
Отлично. Теперь я хочу, чтобы результат config.get(...)
был строкой.
config_mock.return_value = 'my string'
не выполняется, потому что он преобразует значение config
в строку, и вы не можете поместить .get
на веревочке. Затем я пробую
config_mock.get.return_value = 'my string'
, но это тоже не удается. Результатом будет < MagicMock name='Config()' id='567567'>
, который отличается от предыдущего идентификатора, но он должен был быть my string
.
Какой правильный способ вернуть конкретный c вывод для config.get(...)