Realizar pruebas unitarias en FastAPI utilizando Pytest y SQLAlchemy permite validar el correcto funcionamiento de tus endpoints y la lógica de negocio, garantizando que tu aplicación se comporte como se espera. A continuación, te muestro cómo configurar un entorno de pruebas con estas herramientas:
Pasos para Configurar Pruebas Unitarias en FastAPI
1. Instalación de Dependencias
Asegúrate de instalar las librerías necesarias:
pip install pytest pytest-asyncio sqlalchemy
2. Configurar la Base de Datos para Pruebas
Crea una base de datos en memoria para que tus pruebas no afecten los datos reales de producción.
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
Base = declarative_base()
# Base de datos en memoria para pruebas TEST_DATABASE_URL = "sqlite:///:memory:"
engine = create_engine(TEST_DATABASE_URL, connect_args={"check_same_thread": False}) TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Inicialización de la base de datos def init_test_db(): Base.metadata.create_all(bind=engine)
def drop_test_db(): Base.metadata.drop_all(bind=engine)
3. Crear un Cliente de Pruebas para FastAPI
FastAPI incluye un cliente de pruebas basado en Starlette para interactuar con la aplicación.
from fastapi.testclient import TestClient from myapp.main import app # Importa tu aplicación FastAPI
# Crea un cliente de pruebas client = TestClient(app)
4. Configuración de Sesiones de Base de Datos para Pruebas
Sobrescribe la dependencia de base de datos para que utilice la base de datos en memoria.