Więc próbuję użyć unittest.mock, aby podrobić niektóre z moich metod w moich testach jednostkowych. Ja robię:
from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()
Ale dostaję:
ImportError: No module named mock
Próbowałem:
pip install mock
Nadal nie działa.
python
python-2.7
python-import
importerror
Richard Knop
źródło
źródło
Odpowiedzi:
unittest
to wbudowany moduł;mock
jest biblioteką zewnętrzną (w każdym razie w wersji beta w wersji starszej niż 3.3). Po zainstalowaniumock
przezpip install
, importujesz go nie używającfrom unittest.mock import MagicMock
ale
from mock import MagicMock
Edycja:
mock
została zawarta wunittest
module (od Python3.3) i może być importowana przezimport unittest.mock
.źródło
from unittest.mock import MagicMock
W przypadku Pythona 2.7:
Zainstaluj makietę:
Następnie w kodzie testowym użyj tego importu:
from mock import patch, MagicMock
źródło
Jeśli chcesz obsługiwać oba, Python 2 i Python 3, możesz również użyć następujących:
import sys if sys.version_info >= (3, 3): from unittest.mock import MagicMock else: from mock import MagicMock
lub, jeśli nie chcesz importować
sys
try: from unittest.mock import MagicMock except ImportError: from mock import MagicMock
źródło
Z jakiegoś powodu
import unittest.mock
mi nie wyszło, musiałem to zrobićfrom unittest import mock
źródło
Podczas uruchamiania napotkałem problemy podczas importowania
pytest
. Okazało się, że mojapytest
była to wersja 2.7python
, podczas gdy mojavirtualenv
była to 3.6python
. Naprawiłem to, wykonującpip install
from my,virtualenv
a następnie używającpytest
fromenv/bin/pytest
.źródło
Jeśli chodzi o twoją wersję, sugerowałbym udanie się na http://hg.python.org/cpython/file/default/Lib/unittest/mock.py i wykorzystanie tego źródła na swoją korzyść.
źródło
Zmiana
import mock
do
from unittest import mock
Dzieje się tak, ponieważ
unittest.mock
jest to wbudowany moduł zaczynający się od Pythona 3.3, ale istnieje backport w PyPI dla starszych wersji, który można zainstalować jako,pip install mock
a następnie zaimportować jakoimport mock
.Jeśli używasz Pythona 3.3 lub nowszego, nie musisz niczego instalować za pomocą pip, wystarczy zaimportować go jako plik
from unittest import mock
.źródło