我有以下结构:

|-- 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()
python test.py的结果是Bar

如何模拟printBar以使其返回Foo,以便printFoo将其打印出来?

编辑:无需修改test.py的任何其他文件

最佳答案

我猜您将要模拟returnBar函数,您想使用 patch decorator:

from mock import patch

from foo import printFoo

@patch('foo.returnBar')
def test_printFoo(mockBar):
    mockBar.return_value = 'Foo'
    printFoo()

test_printFoo()

关于python - 如何模拟包模块中定义的功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8575713/

10-12 21:50