conftest.py provides shared fixtures and configuration for pytest.
1# conftest.py2import pytest3from fastapi.testclient import TestClient4from sqlalchemy import create_engine5from sqlalchemy.orm import sessionmaker67# Database fixture (shared across all tests)8@pytest.fixture(scope="session")9def db_engine():10 engine = create_engine("sqlite:///test.db")11 Base.metadata.create_all(engine)12 yield engine13 Base.metadata.drop_all(engine)1415@pytest.fixture(autouse=True)16def db_session(db_engine):17 Session = sessionmaker(bind=db_engine)18 session = Session()19 yield session20 session.rollback()21 session.close()2223# Client fixture24@pytest.fixture25def client(app):26 return TestClient(app)2728# Auth fixture29@pytest.fixture30def auth_headers():31 token = create_test_token(user_id=1)32 return {"Authorization": f"Bearer {token}"}3334# Test file35# tests/test_users.py36def test_create_user(client, db_session):37 response = client.post("/users/", json={"name": "Alice"})38 assert response.status_code == 2013940def test_get_users(client, auth_headers):41 response = client.get("/users/", headers=auth_headers)42 assert response.status_code == 200
Features: