Executando verificação de segurança...
2

[PYTHON/DÚVIDA] - Testes unitários com SQLAlchemy e Postgres

Qual a melhor maneira de se criar testes unitários com pytest/unitest ou outra biblioteca em python, com o ORM SQLAlchemy, onde eu possa "MOCKAR" um database, sem precisar fazer conexão com um database existente de teste ?

Trabalho com dois banco de dados Postgres e o MongoDB, para se fazer isso no mongo é muito simples utilizando a lib "mongomock", existe algo parecido para o postgres ?

Carregando publicação patrocinada...
1

Eu dou mock no session do banco de dados, estou usando Pytest. Vai precisar de um banco de dados para teste, mas achei essa a melhor abordagem.

A fixture fica assim:

from sqlalchemy.orm import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

@pytest.fixture
def client(session):
    def get_session_override():
        return session
    app.dependency_overrides[get_session] = get_session_override
    with TestClient(app) as client:
        yield client
    app.dependency_overrides.clear()

@pytest.fixture
def session():
    engine = create_engine(settings.DATABASE_URL_TEST)
    Session = sessionmaker(bind=engine)
    Base.metadata.drop_all(engine)
    Base.metadata.create_all(engine)
    session = Session()
    yield session
    session.close()
    Base.metadata.drop_all(engine)
1