unções de zombaria usando python mock
Estou tentando zombar de uma função (que retorna algum conteúdo externo) usando o módulo simulado python (http://www.voidspace.org.uk/python/mock/index.html)
Estou tendo problemas para zombar de funções importadas para um módul
Por exemplo, em util.py eu tenho
def get_content():
return "stuff"
Quero zombar de util.get_content para que ele retorne outra cois
Estou tentando isso:
util.get_content=Mock(return_value="mocked stuff")
E seget_content
é invocado dentro de outro módulo, ele nunca parece realmente retornar o objeto zombado. Estou faltando alguma coisa em termos de como usar o Mock?
Observe que, se eu chamar o seguinte, as coisas funcionam corretamente:
>>> util.get_content=Mock(return_value="mocked stuff")
>>> util.get_content()
"mocked stuff"
No entanto, se get_content for chamado de dentro de outro módulo, ele chamará a função original em vez da versão simulada:
>>> from mymodule import MyObj
>>> util.get_content=Mock(return_value="mocked stuff")
>>> m=MyObj()
>>> m.func()
"stuff"
Conteúdo do mymodule.py
from util import get_content
class MyObj:
def func():
get_content()
Então, acho que minha pergunta é: como faço para chamar a versão zombada de uma função de dentro de um módulo que eu cham
Parece que ofrom module import function
pode ser o culpado aqui, na medida em que não aponta para a função zombad