[英]How to mock numpy.fromfile?
我正在嘗試將numpy.fromfile
傳遞numpy.fromfile
一個numpy.fromfile
file
,並且我一直收到以下錯誤:
IOError:!第一個參數必須是一個打開的文件
這是一個基本的例子,使用從mock包的Further Example部分獲取的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
,調試器似乎邁過呼叫不管。 numpy
源代碼中找不到fromfile
。 這樣的函數存在於numpy/numarray/functions.py
, numpy/core/records.py
numpy/ma/core.py
和numpy/ma/core.py
,但是這些numpy/ma/core.py
都不會像上面列出的那樣引發錯誤。 任何澄清上述問題的幫助都非常感謝。 順便說一句,我正在使用numpy
版本1.6.1。
我不確定為什么你的模擬open()不起作用,但是因為你立即調用自己的mock,你有一個更簡單的選擇:用StringIO
創建一個文件,並將其交給numpy.fromfile。
問題2和3可能是由於numpy.fromfile是用C語言編寫的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.