Я пытаюсь имитировать функцию (которая возвращает некоторый внешний контент) с помощью модуля фиксации python (http://www.voidspace.org.uk/python/mock /index.html).
У меня проблемы с имитацией функций, импортированных в модуль.
Например, в util.py у меня есть
def get_content():
return "stuff"
Я хочу имитировать util.get_content, чтобы он возвращал что-то другое.
Я пробую следующее:
util.get_content=Mock(return_value="mocked stuff")
Если get_content
вызывается внутри другого модуля, он никогда не возвращает фиктивный объект. Я что-то упустил в плане использования Mock?
Обратите внимание, что если я вызываю следующее, все работает правильно:
>>> util.get_content=Mock(return_value="mocked stuff")
>>> util.get_content()
"mocked stuff"
Однако, если get_content вызывается из другого модуля, он вызывает исходную функцию вместо имитируемой версия:
>>> from mymodule import MyObj
>>> util.get_content=Mock(return_value="mocked stuff")
>>> m=MyObj()
>>> m.func()
"stuff"
Содержание mymodule.py
from util import get_content
class MyObj:
def func():
get_content()
Итак, я предполагаю, что мой вопрос - как мне вызвать макетную версию функции из модуля, который я вызываю?
Похоже, что из Здесь может быть виновата функция импорта модуля
, поскольку она не указывает на функцию Mocked.