{"library":"mock-open","title":"Mock Open","description":"The `mock-open` library (current version 1.4.0) provides an enhanced mock object for testing file I/O operations in Python. It extends `unittest.mock.mock_open` to offer more realistic behavior for file-like objects, including robust handling of `with` statements, `read`, `write`, `seek`, and binary modes. It is actively maintained with releases addressing compatibility and feature enhancements.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install mock-open"],"cli":null},"imports":["from mock_open import MockOpen","from unittest.mock import patch"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from unittest.mock import patch\nfrom mock_open import MockOpen\n\n# Scenario 1: Mocking file reading\nmock_data_to_read = \"Line 1\\nLine 2\\nLine 3\"\nmo_read = MockOpen(read_data=mock_data_to_read)\n\nwith patch(\"builtins.open\", mo_read):\n    with open(\"my_input.txt\", \"r\") as f:\n        content = f.read()\n        lines = f.readlines()\n\n    assert content == mock_data_to_read\n    assert lines == [\"Line 1\\n\", \"Line 2\\n\", \"Line 3\"]\n    mo_read.assert_called_with(\"my_input.txt\", \"r\")\n\n# Scenario 2: Mocking file writing\nmo_write = MockOpen()\n\nwith patch(\"builtins.open\", mo_write):\n    with open(\"my_output.txt\", \"w\") as f:\n        f.write(\"Hello, world!\")\n        f.write(\"Python is great.\")\n\n    # Access the mock handle to verify writes\n    mo_write.mock_handle.write.assert_any_call(\"Hello, world!\")\n    mo_write.mock_handle.write.assert_any_call(\"Python is great.\")\n    mo_write.assert_called_with(\"my_output.txt\", \"w\")\n\n    # You can get the content written to the mock\n    written_content = \"\".join(call.args[0] for call in mo_write.mock_handle.write.call_args_list)\n    assert written_content == \"Hello, world!Python is great.\"\n\nprint(\"Mocking successful!\")","lang":"python","description":"This quickstart demonstrates how to use `mock-open` to patch `builtins.open` for both reading and writing operations. It shows how to initialize `MockOpen` with `read_data` and how to inspect written content via `mock_handle.write` calls.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.4.0","pypi_latest":"1.4.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.6,"avg_import_s":0.36,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.23,"mem_mb":7.3,"disk_size":"19.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.14,"mem_mb":7.3,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.31,"mem_mb":7.8,"disk_size":"21.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.26,"mem_mb":7.8,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.59,"mem_mb":9.6,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.54,"mem_mb":9.6,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.6,"mem_mb":10.1,"disk_size":"11.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.51,"mem_mb":10.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6.3,"disk_size":"18.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mock-open","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.17,"mem_mb":6.3,"disk_size":"19M"}]}}