Ho una seguente struttura:Come prendere in giro una funzione definita in un modulo di un pacchetto?
|-- 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()
il risultato di python test.py
è Bar
.
Come simulare printBar
per restituirlo Foo
in modo che lo printFoo
lo stampi?
EDIT: Senza modificare qualsiasi altro file che test.py
Sì, il problema era: avevo il codice così e non volevo cambiarli. Dopo una discussione su freenode # python ho deciso di rifattorizzare l'altro file (qui foo.py) quindi sarà migliore e più pulito – zalun
@zalun c'è un collegamento a questa discussione? Sono curioso di questo! – brandizzi
non ho idea - ho appena scoperto che non registro nulla ... – zalun