【问题标题】:Python Mock with `from X import y`Python Mock 与 `from X import y`
【发布时间】:2015-02-16 16:37:11
【问题描述】:

我试图在我的单元测试中使用 Python 的 mock 库,但我看到的结果不一致,具体取决于我如何导入我试图修补的目标。我希望这两个打印语句都应该返回False,但似乎只有第二个语句返回False:

from requests import get
import requests

with mock.patch('requests.get') as get_mock:
    get_mock.return_value.ok = False
    print get('http://asdf.com').ok
    print requests.get('http://asdf.com').ok

【问题讨论】:

  • 你还有兴趣吗?
  • 关于这个问题...我没有收到任何关于我的回答的反馈。有什么不清楚的地方?

标签: python python-unittest python-mock


【解决方案1】:

根据Where to patchunittest.mock 文档,您应该注意您修补的内容。

使用

from requests import get

创建原始方法的本地引用(副本)。由

with mock.patch('requests.get') as get_mock:

你只修补 requests 模块中的引用,它给你所谓的不一致的结果,因为 from 语句创建的本地引用保持不变。

可以通过patch.object(get) 或patch('__main__.get') 修补本地引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2017-12-06
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多