# Mock a File

To mock a file you can use StringIO and an input string. Since the StringIO will only traverse once (like a regular file) it might be convenient to make a mock builder.
def mock_open(data_string):mock_file = MagicMock(spec=file)mock_file.return_value = StringIO(data_string)return mock_file

#### Using the Mock

To use the mock you patch the built-in open function.
opened = mock_file()with patch('__builtin__.open', opened, create=True):run_tests_here()

#### Checking the Mock

To see if the file was opened correctly:
opened.assert_called_with(filename, r_or_w)
To check write calls look at opened.write.mock_calls.