mentoria-api-flask/tests/conftest.py

44 lines
1.3 KiB
Python

import pytest
from app import create_app
from app.database import db
from app.models.user import User
from werkzeug.security import generate_password_hash
@pytest.fixture
def app():
"""Cria uma instância do Flask para testes"""
app = create_app()
app.config.update({
"TESTING": True,
"SQLALCHEMY_DATABASE_URI": "sqlite:///:memory:", # Banco em memória para testes rápidos
"SQLALCHEMY_TRACK_MODIFICATIONS": False
})
with app.app_context():
db.create_all() # Cria as tabelas no banco de testes
# Cria o usuário admin fixo, garantindo que esteja disponível para o client
if not User.query.filter_by(email="admin@email.com").first():
admin_user = User(
name="admin",
email="admin@email.com",
password=generate_password_hash("senha123", method="pbkdf2:sha256")
)
db.session.add(admin_user)
db.session.commit()
yield app # Executa os testes
db.session.remove()
db.drop_all() # Limpa o banco após os testes
@pytest.fixture
def client(app):
"""Cliente de testes do Flask"""
return app.test_client()
@pytest.fixture
def db_session(app):
"""Sessão do banco de dados para os testes"""
with app.app_context():
yield db.session