web-dev-qa-db-ja.com

ImportError:mockというモジュールはありません

そのため、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

まだ機能していません。

69
Richard Knop

unittestは組み込みモジュールです。 mockは外部ライブラリです(とにかく3.3以前のベータ版)。 pip install経由でmockをインストールした後、使用せずにインポートします

from unittest.mock import MagicMock

しかし

from mock import MagicMock

編集:mockunittestモジュール(Python3.3以降)に含まれており、import unittest.mockでインポートできます。

89
DSM

Python 2.7:

モックのインストール:

pip install mock

次に、テストコードで次のインポートを使用します。

from mock import patch, MagicMock
15
Drew

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
9
MosteM

お使いのバージョンについては、 http://hg.python.org/cpython/file/default/Lib/unittest/mock.py にアクセスし、このソースを使用することをお勧めします。

3
avasal

何らかの理由で、 import unittest.mock私のために働かなかった、私はしなければならなかった

from unittest import mock
2
friederbluemle

pytestの実行中にインポートの問題に直面していました。私のpytestは2.7のpythonでしたが、私のvirtualenvは3.6 pythonでした。 virtualenvからpip installを実行し、env/bin/pytestからpytestを使用して修正しました。

1
joseph