私はpython-mockを使用して、ファイルを開く呼び出しをモックしています。この方法で偽のデータを渡すことができるようにしたいので、read()
テストでファイルシステムにヒットすることなく、テストデータを使用するだけでなく、それが呼び出されていることを確認できます。
ここに私がこれまでに持っているものがあります:
file_mock = MagicMock(spec=file)
file_mock.read.return_value = 'test'
with patch('__builtin__.open', create=True) as mock_open:
mock_open.return_value = file_mock
with open('x') as f:
print f.read()
これの出力は、私が想定しているようなものではあり<mock.Mock object at 0x8f4aaec>
ません。'test'
このモックを作成する際に何が間違っていますか?
編集:
次のようになります。
with open('x') as f:
f.read()
この:
f = open('x')
f.read()
異なるオブジェクトです。モックをコンテキスト マネージャーとして使用すると、 newMock
が返されますが、それを直接呼び出すと、 で定義したものが返されmock_open.return_value
ます。何か案は?