{"library":"mockito","title":"Mockito for Python","description":"Mockito is a spying framework for Python, based on the Java library of the same name. It focuses on an ergonomic API for stubbing and verification in unit tests, aiming for clear and readable test code. The current version is 2.0.3, and it maintains an active release cadence with continuous development and updates.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install mockito"],"cli":null},"imports":["from mockito import when","from mockito import mock","from mockito import unstub","from mockito import verify","from mockito import expect","from mockito import InOrder","from mockito import patch_attr","from mockito import patch_dict","from mockito import when, mock, unstub","from mockito import mock"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom mockito import when, mock, unstub, verify\n\nclass MyService:\n    def get_file_content(self, path):\n        if os.path.exists(path):\n            # In a real scenario, this would read from the file system\n            return f\"Content of {path}\"\n        return None\n\n    def fetch_data_from_api(self, url):\n        # Imagine 'requests' is a dependency that makes HTTP calls\n        import requests # Imported locally for example, usually at top\n        try:\n            response = requests.get(url)\n            response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)\n            return response.text\n        except Exception:\n            return \"Error fetching data\"\n\n# --- Test MyService with Mockito ---\n\n# Scenario 1: Mocking a module function (os.path.exists)\ndef test_get_file_content_exists():\n    service = MyService()\n    when(os.path).exists('/foo').thenReturn(True)\n    content = service.get_file_content('/foo')\n    assert content == \"Content of /foo\"\n    verify(os.path).exists('/foo')\n    unstub()\n\ndef test_get_file_content_not_exists():\n    service = MyService()\n    when(os.path).exists('/bar').thenReturn(False)\n    content = service.get_file_content('/bar')\n    assert content is None\n    verify(os.path).exists('/bar')\n    unstub()\n\n# Scenario 2: Mocking a third-party library (requests)\ndef test_fetch_data_success():\n    service = MyService()\n    import requests # Ensure requests is available or mocked correctly\n    \n    # Create a mock response object\n    mock_response = mock({'status_code': 200, 'text': '{\"data\": \"mocked data\"}'})\n    when(requests).get('http://example.com/api').thenReturn(mock_response)\n    \n    data = service.fetch_data_from_api('http://example.com/api')\n    assert data == '{\"data\": \"mocked data\"}'\n    verify(requests).get('http://example.com/api')\n    unstub()\n\ndef test_fetch_data_failure():\n    service = MyService()\n    import requests\n    \n    # Mock requests.get to raise an exception\n    when(requests).get('http://bad.com/api').thenRaise(requests.exceptions.ConnectionError)\n    \n    data = service.fetch_data_from_api('http://bad.com/api')\n    assert data == \"Error fetching data\"\n    verify(requests).get('http://bad.com/api')\n    unstub()\n\n# Run tests (example usage)\nprint(\"Running Mockito quickstart tests...\")\ntest_get_file_content_exists()\ntest_get_file_content_not_exists()\ntest_fetch_data_success()\ntest_fetch_data_failure()\nprint(\"All Mockito quickstart tests passed!\")","lang":"python","description":"This quickstart demonstrates how to use Mockito to stub module-level functions (like `os.path.exists`) and third-party library calls (like `requests.get`). It covers returning specific values, raising exceptions, and verifying interactions, always remembering to call `unstub()` to clean up mocks after each test.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"2.0.4","pypi_latest":"2.0.4","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.07,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2.1,"disk_size":"18.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":2.1,"disk_size":"18.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.03,"mem_mb":2.1,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":2.1,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":2.4,"disk_size":"20.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":2.4,"disk_size":"20.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.07,"mem_mb":2.4,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.08,"mem_mb":2.4,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":2.1,"disk_size":"11.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.09,"mem_mb":2.1,"disk_size":"11.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.08,"mem_mb":2.1,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.13,"mem_mb":2.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.6,"disk_size":"11.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.09,"mem_mb":2.6,"disk_size":"11.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.07,"mem_mb":2.4,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":2.4,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2,"disk_size":"17.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":2,"disk_size":"17.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.03,"mem_mb":2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mockito","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.06,"mem_mb":2,"disk_size":"18M"}]}}