justapi — /docs

In-Memory SQLite

Use in-memory SQLite for fast, isolated tests:

import sqlite3
from justapi import JustAPIApp, JustAPITestClient

def get_test_db():
    conn = sqlite3.connect(":memory:")
    conn.execute("CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT)")
    return conn

app = JustAPIApp()

@app.get("/items")
def list_items():
    db = get_test_db()
    cursor = db.execute("SELECT * FROM items")
    return {"items": cursor.fetchall()}

def test_list_items_empty():
    client = JustAPITestClient(app)
    response = client.get("/items")
    assert response.status_code == 200
    assert response.json() == {"items": []}

Transaction Rollback

Wrap each test in a transaction and rollback:

import pytest

@pytest.fixture
def db():
    conn = sqlite3.connect(":memory:")
    conn.execute("CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT)")
    yield conn
    conn.rollback()  # undo all changes
    conn.close()

def test_create_item(db):
    db.execute("INSERT INTO items (name) VALUES (?)", ("Widget",))
    cursor = db.execute("SELECT * FROM items")
    assert cursor.fetchone() is not None

Dependency Override for Testing

from justapi import Depends

def get_db():
    return production_db

def override_get_db():
    return sqlite3.connect(":memory:")

app = JustAPIApp()
app.dependency_overrides[get_db] = override_get_db

def test_handler():
    client = JustAPITestClient(app)
    response = client.get("/items/")
    assert response.status_code == 200

See Also

JustAPI v2.0.9 — Open Source MIT License · Built with WebTUI · GitHub

NORMAL master justapi/docs
utf-8 Top 1:1