我需要模拟一个函数和所有指向这个函数的引用。模拟功能,以及对这个功能的引用
例子:
import mock
def do(msg):
print(msg)
def foo():
do('foo')
bar=foo
with mock.patch(__name__ + '.foo', lambda *args: do('mocked')):
foo()
bar()
输出为:
mocked
foo
但在我来说,我需要模拟真实的功能,而不只是它的名称指向函数的实现。
背景:我想修补https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.PROTECT
我怎样才能得到所需的输出,而不使用“栏”。
mocked
mocked
你不能; 'mock'只是提供暂时覆盖名称所指的机制。你必须分别嘲笑每个名字。 – chepner 2014-08-27 13:35:02