2016-08-25 7 views
2

ドキュメントからの例を使用して、オープン模擬することができません:私はこれを実行すると場合でも、私は、Python <a href="https://docs.python.org/3/library/unittest.mock.html#mock-open" rel="nofollow">mock docs</a>から直接、次のコードをコピーして貼り付けました

from unittest.mock import patch, mock_open 

with patch('__main__.open', mock_open(read_data='bibble')) as m: 
    with open('foo') as h: 
     result = h.read() 

m.assert_called_once_with('foo') 
assert result == 'bibble' 

I次のエラーを取得する:

AttributeError: <module '__main__' from 'path/to/file'> does not have the attribute 'open' 

これはドキュメントに記載されている例であるため、どこを向けるべきかわかりません。私はPython 3.4.5を実行しています。

答えて

0

私はそれを理解しました。

openが組み込まれていますので、builtins.openにパッチを適用する必要がありますが、__main__.openではありません。

この情報はドキュメントに記載されていません。

0

まあ、__main__は、スクリプトを実行するときにデフォルトで指定されたモジュール名です。

コードをPythonファイルに貼り付けて呼び出します。

関連する問題