numpy.fromfilemockedを渡そうとしfileていますが、次のエラーが発生し続けます。
IOError: !最初の引数は開いているファイルでなければなりません
これは、mock パッケージの「追加の例mock_open」セクションから取得したものを使用した基本的な例です。
import numpy as np
from mock import MagicMock, patch
file_spec = file
def mock_open(mock=None, data=None):
if mock is None:
mock = MagicMock(spec=file_spec)
handle = MagicMock(spec=file_spec)
handle.write.return_value = None
if data is None:
handle.__enter__.return_value = handle
else:
handle.__enter__.return_value = data
mock.return_value = handle
return mock
if __name__ == "__main__":
m = mock_open()
with patch('__main__.open', m, create=True):
with open('foo', 'rb') as h:
print h.mock_calls
try:
result = np.fromfile(h)
except IOError:
print "io error!"
print h.mock_calls
その結果:
% [call.__enter__()]
% io error!
% [call.__enter__()]
私はただモックすることができましたnumpy.fromfile、そしてそれはおそらく私がやることになるでしょう。フォローがわかりにくかった
- 上記の例が機能しない理由
- デバッグに問題があるのはなぜですか
fromfile(pdb.set_trace()直前に呼び出してにステップfromfileインすることによりfromfile。デバッガーは何があっても呼び出しをステップオーバーするようです - ソースコード
fromfileで見つからない理由。numpyそのような関数は 、numpy/numarray/functions.py、numpy/core/records.pyおよびnumpy/ma/core.pyにありますが、上記のようなエラーは発生しません。
上記の問題を明確にする助けをいただければ幸いです。numpyちなみにバージョン1.6.1を使っています。