python - Python 中的虚拟对象

标签 python

是否有可能在 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/

相关文章:

python - 用kivy语言设置变量

python - 如果单词与模式匹配,则用字符包围任何单词

python - 对 Pandas DataFrame 组内的 int 系列进行上采样

python - 异常值: Cannot assign "x": "y" must be a "z" instance

python - 在 python (sklearn) 中使用亲和传播聚类 word2vec 向量

python - 以编程方式创建一个非文字 python 元组

c# - 两个程序可以同时更新文本文件(实时通信)吗?

python - 将雅虎财经导入Python时遇到问题

python - 如何使用 Dropbox python API 获取文件的链接?

python - 在 Web 应用程序中处理类源数据文件的最佳方式是什么?