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:
unittest
es un módulo incorporado;mock
es una biblioteca externa (de todas formas, versiones anteriores a 3.3). Después de instalar amock
travéspip install
, lo importa no usandofrom unittest.mock import MagicMock
pero
from mock import MagicMock
Editar:
mock
se ha incluido en elunittest
módulo (desde Python3.3) y puede ser importado porimport unittest.mock
.fuente
from unittest.mock import MagicMock
Para Python 2.7:
Instalar simulacro:
Luego, en el código de prueba, use esta importación:
from mock import patch, MagicMock
fuente
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 MagicMock
o, si no desea importar
sys
try: from unittest.mock import MagicMock except ImportError: from mock import MagicMock
fuente
Por alguna razón,
import unittest.mock
no funcionó para mí, tuve que hacerfrom unittest import mock
fuente
Estaba enfrentando problemas de importación al ejecutar
pytest
. Resultó ser mipytest
versión 2.7python
, mientras que mivirtualenv
era 3.6python
. Lo arreglé haciendo unpip install
from myvirtualenv
y luego usando elpytest
fromenv/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 mock
a
from unittest import mock
Esto sucede porque
unittest.mock
es un módulo incorporado que comienza con Python 3.3, pero hay un backport en PyPI para versiones anteriores, que puede instalarpip install mock
y 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