Я пытаюсь Mock функция (которая возвращает некоторый внешний контент), используя модуль python mock (http://www.voidspace.org.uk/python/mock/index.html).
У меня возникают некоторые проблемы с издевательскими функциями, которые импортируются в модуль.
Например, в util.py у меня есть
def get_content():
return "stuff"
Я хочу mock 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 из функции внутри модуля, который я вызываю?
Похоже, здесь может быть виноват from module import function
, поскольку он не указывает на функцию Mocked.