Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用pytest在测试中导入模拟_Python_Python 2.7_Pytest_Python Mock - Fatal编程技术网

Python 无法使用pytest在测试中导入模拟

Python 无法使用pytest在测试中导入模拟,python,python-2.7,pytest,python-mock,Python,Python 2.7,Pytest,Python Mock,我有一个测试文件tests.py。目前,为了帮助隔离问题,该文件仅包含以下行: from mock import Mock 当我尝试使用pytest运行此文件时: $ py.test tests.py 我得到以下错误输出: tests.py:1: in <module> from mock import Mock E ImportError: No module named mock =========================== 1 error in 0.0

我有一个测试文件
tests.py
。目前,为了帮助隔离问题,该文件仅包含以下行:

from mock import Mock
当我尝试使用
pytest
运行此文件时:

$ py.test tests.py
我得到以下错误输出:

tests.py:1: in <module>
    from mock import Mock
E   ImportError: No module named mock
=========================== 1 error in 0.00 seconds ============================

我不明白这个错误。同样,如果我打开一个交互式解释器,我可以导入
mock
,而不会出现问题为什么在这种情况下我不能访问
mock

结果表明,我使用的Pytest版本是通过
apt
安装的,而我的
mock
版本是通过虚拟环境中的
pip
安装的。根据MichaelKarotsieris的建议,我在使用Pytest运行测试后检查了
sys.path
的内容(在出现错误后,我使用
--pdb
选项弹出
pdb
调试器):

由此我发现,尽管我的虚拟环境处于活动状态,但该环境不在
sys.path

接下来,我尝试通过pip在虚拟环境中安装pytest:

(my_env) $ pip install pytest
但是,仅通过这一步,通过
apt
安装的Pytest版本仍在使用中,因此我决定将其删除:

(my_env) $ sudo apt remove --purge python-pytest
在此之后,运行
py.test
命令按预期工作

事后看来,我想我本可以通过
apt
安装Pytest版本,直接从virtualenv运行可执行文件:

(my_env) $ /path/to/my_env/bin/py.test tests.py

你检查过PATH变量了吗?也许你有另一个python二进制文件在运行?谢谢@MichaelKarotsieris,这让我走上了正确的轨道。我当时在virtualenv中,但pytest是通过我的操作系统包管理器安装的(
apt
在Ubuntu上)。当我运行
py.test
命令时,我的虚拟环境不在
sys.path
中,这是安装
mock
的地方。我不得不删除通过
apt
安装的pytest版本,并通过我的virtualenv中的
pip
安装它,这样它才能工作……酷!很高兴能帮忙!:)
(my_env) $ sudo apt remove --purge python-pytest
(my_env) $ /path/to/my_env/bin/py.test tests.py