Ich versuche also, unittest.mock zu verwenden, um einige meiner Methoden in meinen Unit-Tests zu verspotten. Ich mache:
from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()
Aber ich bekomme:
ImportError: No module named mock
Ich habe es versucht:
pip install mock
Es funktioniert immer noch nicht.
python
python-2.7
python-import
importerror
Richard Knop
quelle
quelle
Antworten:
unittest
ist ein eingebautes Modul;mock
ist eine externe Bibliothek (jedenfalls Betas vor 3.3). Nach der Installationmock
überpip install
importieren Sie es nicht mitfrom unittest.mock import MagicMock
aber
from mock import MagicMock
Bearbeiten:
mock
wurde in dasunittest
Modul aufgenommen (seit Python3.3) und kann von importiert werdenimport unittest.mock
.quelle
from unittest.mock import MagicMock
Für Python 2.7:
Mock installieren:
Verwenden Sie dann im Testcode diesen Import:
from mock import patch, MagicMock
quelle
Wenn Sie sowohl Python 2 als auch Python 3 unterstützen möchten, können Sie auch Folgendes verwenden:
import sys if sys.version_info >= (3, 3): from unittest.mock import MagicMock else: from mock import MagicMock
oder, wenn Sie nicht importieren möchten
sys
try: from unittest.mock import MagicMock except ImportError: from mock import MagicMock
quelle
Aus irgendeinem Grund hat
import unittest.mock
es bei mir nicht funktioniert, ich musste es tunfrom unittest import mock
quelle
Beim Ausführen traten beim Import Probleme auf
pytest
. Es stellte sich heraus, dass meinepytest
Version 2.7 warpython
, während meine Versionvirtualenv
3.6 warpython
. Ich habe es behoben, indem ich einpip install
from von meinem gemachtvirtualenv
und dann daspytest
from verwendet habeenv/bin/pytest
.quelle
Für Ihre Version würde ich vorschlagen, gehen Sie zu http://hg.python.org/cpython/file/default/Lib/unittest/mock.py und nutzen Sie diese Quelle zu Ihrem Vorteil.
quelle
Veränderung
import mock
zu
from unittest import mock
Dies liegt daran, dass
unittest.mock
es sich um ein integriertes Modul handelt , das mit Python 3.3 beginnt. Für ältere Versionen gibt es jedoch einen Backport auf PyPI , den Sie installierenpip install mock
und dann importieren könnenimport mock
.Wenn Sie Python 3.3 oder höher verwenden, müssen Sie nichts per Pip installieren, sondern müssen es nur als importieren
from unittest import mock
.quelle