имитация функций с использованием имитация Python

Я пытаюсь имитировать функцию (которая возвращает некоторый внешний контент) с помощью модуля фиксации 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.

60
задан shreddd 14 March 2011 в 05:37
поделиться