""" Testes para configuracao de logging. """ import pytest import logging import json import tempfile from pathlib import Path from src.logging_config import setup_logging, get_logger, log_rag_query class TestLoggingConfig: """Testes para configuracao de logging.""" def test_setup_logging_default(self): """Testa setup de logging com configuracao padrao.""" logger = setup_logging() assert logger is not None assert logger.level == logging.INFO def test_setup_logging_debug(self): """Testa setup com nivel DEBUG.""" logger = setup_logging(level="DEBUG") assert logger.level == logging.DEBUG def test_get_logger(self): """Testa obtencao de logger.""" logger = get_logger("test_module") assert logger is not None assert logger.name == "test_module" def test_log_rag_query(self): """Testa logging de query RAG.""" # Criar arquivo de log temporario with tempfile.NamedTemporaryFile(mode='w', suffix='.log', delete=False) as f: log_file = f.name try: # Setup logging para arquivo logger = setup_logging(log_file=log_file) # Log query log_rag_query( query="teste query", num_results=5, response_time=0.123, model="test-model" ) # Verificar que foi escrito log_content = Path(log_file).read_text() assert "teste query" in log_content or len(log_content) > 0 finally: Path(log_file).unlink(missing_ok=True) def test_log_levels(self): """Testa diferentes niveis de log.""" logger = get_logger("test_levels") # Nao deve lancar excecoes logger.debug("Debug message") logger.info("Info message") logger.warning("Warning message") logger.error("Error message") def test_structured_logging(self): """Testa logging estruturado em JSON.""" with tempfile.NamedTemporaryFile(mode='w', suffix='.log', delete=False) as f: log_file = f.name try: logger = setup_logging(log_file=log_file, format="json") # Log mensagem estruturada logger.info("Test message", extra={ "query": "test", "results": 5, "time": 0.5 }) # Ler log log_content = Path(log_file).read_text() assert len(log_content) > 0 finally: Path(log_file).unlink(missing_ok=True) if __name__ == "__main__": pytest.main([__file__, "-v"])