ImportError: нет модуля с именем mock
поэтому я пытаюсь использовать unittest.издеваться над некоторыми из моих методов в моих модульных тестах. Я делаю:
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
он все еще не работает.
5 ответов:
unittest
встроенный модуль;mock
- Это внешняя библиотека (до 3.3 версии, во всяком случае). После установкиmock
черезpip install
, вы импортируете его не с помощьюfrom unittest.mock import MagicMock
но
from mock import MagicMock
Edit:
mock
входит вunittest
модуль (начиная с Python3. 3), и может быть импортированimport unittest.mock
.
Для Python 2.7:
установить глумиться:
pip install mock
затем в тестовом коде используйте этот импорт:
from mock import patch, MagicMock
для вашей версии, я бы предложил перейти к http://hg.python.org/cpython/file/default/Lib/unittest/mock.py и используйте этот источник в своих интересах.
Если вы хотите поддерживать оба, 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