Mock Alchemy

0.2.6 · active · verified Fri Apr 17

mock-alchemy provides mock helpers for SQLAlchemy, allowing developers to test SQLAlchemy-dependent code without needing a live database connection. The current version is 0.2.6, offering compatibility with SQLAlchemy 2.0 and Python 3.7+. Releases are made periodically to add new features, support newer SQLAlchemy versions, and fix bugs.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to set up a mock SQLAlchemy session using `UnifiedAlchemyMagicMock`, add mock data, and perform common query operations like `filter`, `first`, `all`, `count`, and `delete` without connecting to a real database. It uses SQLAlchemy 2.0+ declarative syntax for the model.

from mock_alchemy.mocking import UnifiedAlchemyMagicMock
from sqlalchemy.orm import declarative_base, Mapped, mapped_column
from sqlalchemy import String, Integer

# Define a simple SQLAlchemy model using SQLAlchemy 2.0+ syntax
Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    name: Mapped[str] = mapped_column(String)

# Create a mock session instance
session = UnifiedAlchemyMagicMock()

# Add some mock data to the session
session.add(User(id=1, name="Alice"))
session.add(User(id=2, name="Bob"))
session.add(User(id=3, name="Charlie"))

# Perform mock queries
user_alice = session.query(User).filter(User.name == "Alice").first()
print(f"Found user by name: {user_alice.name}")

all_users = session.query(User).all()
print(f"All users: {[u.name for u in all_users]}")

user_count = session.query(User).count()
print(f"Total users: {user_count}")

# Simulate a deletion
session.query(User).filter(User.id == 2).delete()
remaining_users = session.query(User).all()
print(f"Users after deletion: {[u.name for u in remaining_users]}")

view raw JSON →