import subprocess from time import sleep from typing import Generator import uuid from kafka import KafkaConsumer import pytest from redis import Redis @pytest.fixture(scope="session", autouse=True) def docker_compose(): """Sobe os containers antes dos testes e derruba depois.""" print("\n🚀 Subindo Docker Compose...") subprocess.run(["docker", "compose", "up", "-d"], check=True) print("⏳ Aguardando containers ficarem prontos...") sleep(15) # ajuste conforme necessário yield # os testes rodam aqui print("\n🧹 Derrubando Docker Compose...") subprocess.run(["docker", "compose", "down"], check=True) @pytest.fixture() def redis_client(): redis = Redis(host="localhost", port=6379, decode_responses=True) redis.flushdb() yield redis # Limpa o banco de dados após os testes redis.flushdb() redis.close() def kafka_searcher(topic) -> Generator[KafkaConsumer, None, None]: consumer = KafkaConsumer( topic, bootstrap_servers="localhost:9092", group_id=f"test-group-{uuid.uuid4()}", auto_offset_reset="earliest", # Começa a consumir apenas mensagens novas enable_auto_commit=True, ) yield consumer consumer.close()