是否有可能在 Python 中创建一个“愚蠢的”虚拟对象,无论如何调用或以其他方式操作,它始终不执行任何操作并且永远不会抛出错误?
这个用例是当有一个对象在正常情况下用于产生副作用,但如果在不同的环境中运行(假设在开发期间)不应该做任何事情并且静默失败。
try:
o = Obj()
except ImportError:
# we're in development mode
o = DummyObj()
o.doStuff() # should work or fail silently
最佳答案
尝试使用 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
它将返回与 doStuff()
相同的 Mock
。
模拟对象通常用于单元测试,因此您可以使用它们做的事情比我在这里展示的要多得多。阅读更多 here如果你有兴趣。
关于python - Python 中的虚拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22079746/