92

だから私は 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

まだ機能していません。

4

7 に答える 7

119

unittest組み込みモジュールです。mockは外部ライブラリです (3.3 より前のベータ版です)。mock経由でインストールした後pip install、使用しないでインポートします

from unittest.mock import MagicMock

しかし

from mock import MagicMock

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

于 2012-07-16T09:33:07.033 に答える
21

Python 2.7 の場合:

モックをインストールします:

pip install mock

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

from mock import patch, MagicMock
于 2017-09-20T20:10:50.367 に答える
8

Python 3.3+を使用している場合は、変更します

import mock

from unittest import mock

古いバージョンの Python では、コードを何も変更せずに、代わりに次のシェル コマンドを実行します。

pip install mock

このインポート エラーは、unittest.mockが Python 3.3 で追加されたために発生し、古い Python バージョン用の PyPI にバックポートがあります。コードが Python 2 だった場合は、おそらくバックポートをインポートしようとしています。


pyupgradeは、コードで実行してこれらのインポートを書き換え、Python 2 から不要になったその他の残り物を削除できるツールです。

于 2019-11-07T21:56:39.540 に答える
6

何らかの理由で、import unittest.mock私にはうまくいきませんでした。

from unittest import mock
于 2018-04-21T20:42:18.470 に答える
3

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

于 2012-07-16T09:33:10.013 に答える