Ric*_*nop 71 python python-import importerror python-2.7
所以我试图使用unittest.mock在我的单元测试中模拟我的一些方法.我做:
from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()
Run Code Online (Sandbox Code Playgroud)
但我得到:
ImportError: No module named mock
Run Code Online (Sandbox Code Playgroud)
我试过了:
pip install mock
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作.
DSM*_*DSM 93
unittest是一个内置模块; mock是一个外部库(无论如何都是3.3之前的beta).安装mockvia后pip install,不使用导入它
from unittest.mock import MagicMock
Run Code Online (Sandbox Code Playgroud)
但
from mock import MagicMock
Run Code Online (Sandbox Code Playgroud)
编辑:mock已包含在unittest模块中(自Python3.3起),并可以通过导入import unittest.mock.
Dre*_*rew 15
对于Python 2.7:
安装模拟:
pip install mock
Run Code Online (Sandbox Code Playgroud)
然后在测试代码中,使用此导入:
from mock import patch, MagicMock
Run Code Online (Sandbox Code Playgroud)
Mos*_*teM 10
如果您想同时支持Python 2和Python 3,您还可以使用以下内容:
import sys
if sys.version_info >= (3, 3):
from unittest.mock import MagicMock
else:
from mock import MagicMock
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想导入 sys
try:
from unittest.mock import MagicMock
except ImportError:
from mock import MagicMock
Run Code Online (Sandbox Code Playgroud)
出于某种原因,import unittest.mock对我不起作用,我不得不这样做
from unittest import mock
Run Code Online (Sandbox Code Playgroud)
改变
import mock
Run Code Online (Sandbox Code Playgroud)
到
from unittest import mock
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为它unittest.mock 是一个从 Python 3.3 开始的内置模块,但是PyPI 上有一个用于旧版本的向后移植,您可以将其安装pip install mock为import mock.
如果您使用的是 Python 3.3 或更高版本,则不需要 pip install 任何东西,只需将其导入为from unittest import mock.
我在运行时遇到导入问题pytest。结果我的pytest是 2.7 版本python,而我的virtualenv是 3.6 版本python。我通过执行 a pip installfrom myvirtualenv然后使用pytestfrom来修复它env/bin/pytest。
| 归档时间: |
|
| 查看次数: |
71737 次 |
| 最近记录: |