【发布时间】:2023-03-24 04:03:01
【问题描述】:
我正在尝试让模拟库返回带有补丁的特定模拟对象。无论我尝试什么,如果我在“with”子句中实例化一个新对象,我会得到一个通用的 Mock 对象,而不是我自定义的对象。
这是我的代码,以日志记录为例:
import logging
my_mock = Mock()
my_mock.id = 'i-12341234'
with patch('logging.PlaceHolder', new=my_mock) as mockobj:
print mockobj.id # correctly prints 'i-12341234'
newobj = logging.PlaceHolder(None)
print newobj.id # prints <Mock name='mock().id' id='47607184'>
每次实例化一个新的 logging.Placeholder 实例时,我如何才能让 mock 返回 my_mock?
事实证明,子类化 Mock 并使用 new_callable 传递它。由于我花时间尝试使上述版本正常工作,我仍然很感激并回答。
【问题讨论】:
标签: python