Así que estoy tratando de usar unittest.mock para simular algunos de mis métodos en mis pruebas unitarias. Hago:
from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()
Pero estoy obteniendo:
ImportError: No module named mock
Lo intenté:
pip install mock
Todavía no funciona.
python
python-2.7
python-import
importerror
Richard Knop
fuente
fuente

Respuestas:
unittestes un módulo incorporado;mockes una biblioteca externa (de todas formas, versiones anteriores a 3.3). Después de instalar amocktravéspip install, lo importa no usandofrom unittest.mock import MagicMockpero
from mock import MagicMockEditar:
mockse ha incluido en elunittestmódulo (desde Python3.3) y puede ser importado porimport unittest.mock.fuente
from unittest.mock import MagicMockPara Python 2.7:
Instalar simulacro:
Luego, en el código de prueba, use esta importación:
from mock import patch, MagicMockfuente
Si desea admitir tanto Python 2 como Python 3, también puede usar lo siguiente:
import sys if sys.version_info >= (3, 3): from unittest.mock import MagicMock else: from mock import MagicMocko, si no desea importar
systry: from unittest.mock import MagicMock except ImportError: from mock import MagicMockfuente
Por alguna razón,
import unittest.mockno funcionó para mí, tuve que hacerfrom unittest import mockfuente
Estaba enfrentando problemas de importación al ejecutar
pytest. Resultó ser mipytestversión 2.7python, mientras que mivirtualenvera 3.6python. Lo arreglé haciendo unpip installfrom myvirtualenvy luego usando elpytestfromenv/bin/pytest.fuente
Para su versión, le sugiero que vaya a http://hg.python.org/cpython/file/default/Lib/unittest/mock.py y use esta fuente a su favor.
fuente
Cambio
import mocka
from unittest import mockEsto sucede porque
unittest.mockes un módulo incorporado que comienza con Python 3.3, pero hay un backport en PyPI para versiones anteriores, que puede instalarpip install mocky luego importar comoimport mock.Si está usando Python 3.3 o posterior, no necesita instalar nada, solo tiene que importarlo como
from unittest import mock.fuente