Tengo una estructura siguiente:Cómo simular una función definida en un módulo de un paquete?
|-- dirBar
| |-- __init__.py
| |-- bar.py
|-- foo.py
`-- test.py
bar.py
def returnBar():
return 'Bar'
foo.py
from dirBar.bar import returnBar
def printFoo():
print returnBar()
test.py
from mock import Mock
from foo import printFoo
from dirBar import bar
bar.returnBar = Mock(return_value='Foo')
printFoo()
el resultado de python test.py
es Bar
.
¿Cómo burlarse del printBar
para que vuelva Foo
para que printFoo
lo imprima?
EDIT: Sin modificar cualquier otro archivo que test.py
Sí, el problema era que tenía el código así y no quería cambiarlos. Después de una discusión sobre freenode # python he decidido refactorizar el otro archivo (aquí foo.py) así que será mejor y más limpio – zalun
@zalun ¿hay algún enlace a esta discusión? ¡Tengo curiosidad por eso! – brandizzi
no tengo idea - Acabo de descubrir que no inicie sesión ... – zalun