New submission from Anthony Flury <anthony.fl...@btinternet.com>: Using the unittest.mock helper mock_open with multi-line read data, although readlines method will work on the mocked open data, the commonly used iterator idiom on an open file returns the equivalent of an empty file.
from unittest.mock import mock_open read_data = 'line 1\nline 2\nline 3\nline 4\n' with patch('builtins.open', mock_open) as mocked: with open('a.txt', 'r') as fp: assert [l for l in StringIO(read_data)] == [l for l in fp] will fail although it will work on a normal file with the same data, and using [l for l in fp.readlines()] will also work. There is a relatively simple fix which I have a working local version - but I don't know how to provide that back to the library - or even if i should. ---------- components: Library (Lib) messages: 312706 nosy: anthony-flury priority: normal severity: normal status: open title: mock_open does not support iteration around text files. versions: Python 3.4, Python 3.5, Python 3.6, Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue32933> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com