[python] ImportError : mock이라는 모듈이 없습니다.

그래서 unittest.mock을 사용하여 단위 테스트에서 내 방법 중 일부를 모의하려고합니다. 나는한다:

from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()

그러나 나는 얻고있다 :

ImportError: No module named mock

나는 시도했다 :

pip install mock

여전히 작동하지 않습니다.



답변

unittest내장 모듈입니다. mock외부 라이브러리입니다 (어쨌든 3.3 이전 베타). 를 mock통해 설치 한 후 pip install사용하지 않고 가져옵니다.

from unittest.mock import MagicMock

그러나

from mock import MagicMock

편집 : 모듈 mock에 포함되었으며 unittest(Python3.3 이후) import unittest.mock.


답변

Python 2.7의 경우 :

모의 설치 :

pip install mock

그런 다음 테스트 코드에서 다음 가져 오기를 사용합니다.

from mock import patch, MagicMock


답변

Python 2와 Python 3을 모두 지원하려면 다음을 사용할 수도 있습니다.

import sys
if sys.version_info >= (3, 3):
    from unittest.mock import MagicMock
else:
    from mock import MagicMock

또는 가져 오지 않으려면 sys

try:
    from unittest.mock import MagicMock
except ImportError:
    from mock import MagicMock


답변

왠지 import unittest.mock저를 위해 일 하지 않았어요.

from unittest import mock


답변

실행할 때 가져 오기에 문제가 발생했습니다 pytest. 내 pytest버전은 2.7 버전 python이고 내 버전은 virtualenv3.6 버전이었습니다 python. pip install내에서 a 를 수행 한 virtualenv다음 pytestfrom env/bin/pytest.


답변

귀하의 버전에 대해서는 http://hg.python.org/cpython/file/default/Lib/unittest/mock.py 로 이동 하여이 소스를 유리하게 사용하는 것이 좋습니다 .


답변

변화

import mock

…에

from unittest import mock

이는 Python 3.3으로 시작 unittest.mock 하는 내장 모듈 이기 때문에 발생 하지만 이전 버전의 경우 PyPI백 포트가pip install mock 있으므로 import mock.

Python 3.3 이상을 사용하는 경우 pip를 설치할 필요가 없으며 from unittest import mock.