File size: 1,438 Bytes
358dfff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from fastapi.testclient import TestClient
from main import app
from database.database import get_db
from models.base import Base
# Create a test database session
TEST_DATABASE_URL = "sqlite:///./test_assessment_platform.db"
engine = create_engine(TEST_DATABASE_URL, connect_args={"check_same_thread": False})
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def override_get_db():
"""Override the get_db dependency for testing."""
try:
db = TestingSessionLocal()
yield db
finally:
db.close()
# Override the database dependency
app.dependency_overrides[get_db] = override_get_db
@pytest.fixture(scope="session")
def db_engine():
"""Create a test database engine."""
Base.metadata.create_all(bind=engine)
yield engine
# Cleanup if needed
# Base.metadata.drop_all(bind=engine)
@pytest.fixture(scope="function")
def db_session(db_engine):
"""Create a test database session."""
connection = db_engine.connect()
transaction = connection.begin()
session = TestingSessionLocal(bind=connection)
yield session
session.close()
transaction.rollback()
connection.close()
@pytest.fixture(scope="module")
def client():
"""Create a test client."""
with TestClient(app) as test_client:
yield test_client |