【发布时间】:2016-12-24 10:20:32
【问题描述】:
我正在尝试为 Python 程序创建一些测试。我使用的是 Python 版本 2.7.12,所以我必须使用 sudo pip install mock 安装 mock。
根据documentation和severalothersites应该可以使用下面的代码来使用patch:
import mock # Also could use from mock import patch
import unittest
class TestCases(unittest.TestCase):
@mock.patch('MyClass.ImportedClass') # If using from mock import patch should just be @patch
def test_patches(self, mock_ImportedClass):
# Test code...
但是,上面的代码会抛出以下错误:
AttributeError: 'module' object has no attribute 'patch'
在终端中进行了一些实验后,似乎有很多东西不起作用。例如
>>> import mock
>>> mock.MagicMock
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'MagicMock'
>>> mock.patch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'patch'
>>> mock.Mock
<class mock.Mock at 0x7fdff56b0600>
有趣的是,我可以使用 mock.Mock() 访问名为 patch 的东西,但我不知道这是否以相同的方式工作,并且在文档中找不到任何相关信息。
我在 Python 方面的经验相当有限,所以我不确定可能出了什么问题。我相当确定安装了正确的软件包。对我如何使其正常工作有任何帮助吗?
【问题讨论】:
-
您是否将文件命名为
mock.py或其他名称?检查mock.__file__,看看它告诉你什么。 -
@user2357112 你非常接近。在 python 的搜索路径中的一个目录中还有另一个名为
mock.py的文件。不知道它来自哪里,但是在我删除它之后,现在一切似乎都可以编译了。谢谢 -
我移动了一个
mock子目录,一旦我删除了mock目录,所有测试都失败并出现同样的错误。一切正常。 -
@user2357112 如果你想写一个答案,我可以把它标记为正确,这样你就可以获得当之无愧的分数。
标签: python python-2.7 unit-testing