我需要模擬一個函數和所有指向這個函數的引用。模擬功能,以及對這個功能的引用
例子:
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