【问题标题】:global name 'mock' is not defined未定义全局名称“mock”
【发布时间】:2017-03-13 12:19:25
【问题描述】:

我正在尝试在 Python 中进行单元测试。我一直遇到模拟问题,应该将其移植到 Python 2.7,但我无法让它工作。

在代码的顶部我有:from mock import MagicMock, call,但是当我运行单元测试时我仍然收到错误,它抱怨global name 'mock' is not defined

郁闷,我去看看是不是真的安装好了(pip install mock 和 pip install unittest 都跑过了)。

mock.py only 存在于/usr/lib/python3.4/unittest/mock.py,这让我相信只有 Debian Jessie 上的 Python3 真正支持模拟对象。

所以,问题来了:我如何获得 2.7 的实际反向端口,如何配置 Debian 8 以默认使用 Python3 运行应用程序?

【问题讨论】:

  • 排除愚蠢的错误:错误发生在您的from mock import etc 行?
  • 请显示代码和完整的错误。您显然是在某处直接引用mock,但如果不显示代码,我们无能为力。请注意,这是一个关于 Python 语法的问题,而不是关于模拟或反向移植库。

标签: python python-2.7 unit-testing mocking


【解决方案1】:

解决了。

对于未来的搜索者,答案有两个:

  1. 添加 import mock,但这会导致错误,因为 Debian Jessie 上的 Python 2.7 库在 /usr/lib/python2.7/ 中没有 mock.py,因此您可以通过以下方式解决该问题:

  2. 下载latest backport,解压,将包含mock包的mock目录复制到/usr/lib/python2.7/

出于某种原因,pip 和 easy_install 仅安装 3.4 库。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2015-12-22
    • 2014-04-18
    • 2015-08-08
    • 2011-04-27
    • 2013-09-04
    • 2015-02-26
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多