そのため、unittest.mockを使用して、単体テストでメソッドの一部をモックしようとしています。私がやります:
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
まだ機能していません。
unittest
は組み込みモジュールです。 mock
は外部ライブラリです(とにかく3.3以前のベータ版)。 pip install
経由でmock
をインストールした後、使用せずにインポートします
from unittest.mock import MagicMock
しかし
from mock import MagicMock
編集:mock
はunittest
モジュール(Python3.3以降)に含まれており、import unittest.mock
でインポートできます。
Python 2.7:
モックのインストール:
pip install mock
次に、テストコードで次のインポートを使用します。
from mock import patch, MagicMock
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
お使いのバージョンについては、 http://hg.python.org/cpython/file/default/Lib/unittest/mock.py にアクセスし、このソースを使用することをお勧めします。
何らかの理由で、 import unittest.mock
私のために働かなかった、私はしなければならなかった
from unittest import mock
pytest
の実行中にインポートの問題に直面していました。私のpytest
は2.7のpython
でしたが、私のvirtualenv
は3.6 python
でした。 virtualenv
からpip install
を実行し、env/bin/pytest
からpytest
を使用して修正しました。