是否有可能在Python中创建一个“愚蠢”的虚拟对象,无论如何被调用或以其他方式操作,它总是无操作并且永远不会抛出错误?
用例就是在正常情况下有一个用于创建副作用的对象,但是如果在不同的环境中运行(假设在开发期间)不应该做任何事情并且无声地失败。
try:
o = Obj()
except ImportError:
# we're in development mode
o = DummyObj()
o.doStuff() # should work or fail silently
答案 0 :(得分:6)
尝试使用Mock
个对象。对Mock
对象进行的任何调用都将返回另一个Mock
对象。
例如:
>>> from mock import Mock
>>> test = Mock()
>>> test.doStuff()
<Mock name='mock.doStuff()' id='4373729360'>
>>> test2 = test.doStuff
>>> test2
<Mock name='mock.doStuff' id='4373693712'>
>>> test2()
<Mock name='mock.doStuff()' id='4373729360'>
如此处所示,它是一致的 - 多次调用doStuff()
会返回相同的Mock
,如果您调用Mock
创建的mock.doStuff
,它将返回相同的内容Mock
为doStuff()
。
模拟对象通常用于单元测试中,因此除了我在此处显示的内容之外,您还可以使用它们。如果您有兴趣,请阅读更多here。