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   58  

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

по какой причине import unittest.mock не работает для меня, я должен был сделать

from unittest import mock