{"library":"pytest-mock-resources","title":"Pytest Mock Resources","description":"A pytest plugin for easily instantiating reproducible mock resources such as PostgreSQL, MongoDB, Redis, and more. It leverages Docker to manage container lifecycles, providing real service instances for robust integration testing without relying on complex mocks. The library is actively maintained with frequent releases, currently at version 2.12.4.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pytest-mock-resources pytest","pip install pytest-mock-resources[postgres] psycopg2-binary"],"cli":null},"imports":["from pytest_mock_resources import create_postgres_fixture","from pytest_mock_resources import PostgresConfig","from pytest_mock_resources import create_mongo_fixture","from pytest_mock_resources import create_redis_fixture"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pytest\nfrom sqlalchemy import create_engine, text\nfrom sqlalchemy.orm import declarative_base, sessionmaker\n\n# Define a simple SQLAlchemy model (if using ORM)\nBase = declarative_base()\n\nclass User(Base):\n    __tablename__ = 'users'\n    id = Column(Integer, primary_key=True)\n    name = Column(String)\n\n    def __repr__(self):\n        return f\"<User(id={self.id}, name='{self.name}')>\"\n\nfrom sqlalchemy import Column, Integer, String\nfrom pytest_mock_resources import create_postgres_fixture\n\n# Create a PostgreSQL fixture, providing the SQLAlchemy Base and enabling session\n# This fixture will provide a SQLAlchemy session object to tests that request 'pg'\npg = create_postgres_fixture(Base, session=True)\n\ndef test_user_creation(pg):\n    \"\"\"Test creating a user in the mock PostgreSQL database.\"\"\"\n    # 'pg' is a SQLAlchemy session provided by the fixture\n    new_user = User(name='Alice')\n    pg.add(new_user)\n    pg.commit()\n    pg.refresh(new_user)\n\n    result = pg.execute(text(\"SELECT name FROM users WHERE id = :id\"), {'id': new_user.id}).scalar_one()\n    assert result == 'Alice'\n\ndef test_another_user_creation(pg):\n    \"\"\"Another test, ensuring isolation between tests (new empty database).\"\"\"\n    # This test gets a fresh, empty database instance\n    assert pg.query(User).count() == 0\n    new_user = User(name='Bob')\n    pg.add(new_user)\n    pg.commit()\n    assert pg.query(User).count() == 1","lang":"python","description":"This quickstart demonstrates how to use `pytest-mock-resources` to create a mock PostgreSQL database. It defines a simple SQLAlchemy model, sets up a `create_postgres_fixture` that yields a SQLAlchemy session, and then shows two isolated tests creating users.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"2.12.4","pypi_latest":"2.12.4","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":4.4,"avg_import_s":1.47,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.29,"mem_mb":32,"disk_size":"55.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.6,"import_time_s":1.02,"mem_mb":32,"disk_size":"54M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.67,"mem_mb":35.5,"disk_size":"62.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":1.53,"mem_mb":35.5,"disk_size":"61M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.77,"mem_mb":35.2,"disk_size":"53.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":1.83,"mem_mb":35.2,"disk_size":"52M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.8,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.69,"mem_mb":35.2,"disk_size":"52.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":1.58,"mem_mb":35.2,"disk_size":"51M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.4,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.18,"mem_mb":31.9,"disk_size":"54.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytest-mock-resources","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.5,"import_time_s":1.1,"mem_mb":31.9,"disk_size":"53M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"postgres","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.6,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}