SummarizerApp / tests /test_loguru_imports.py
ming
Migrate logging from stdlib to Loguru for structured logging
7ab470d
"""
Tests for Loguru imports across modules.
These tests verify:
- get_logger() works when imported from different modules
- Logger instances have the correct Loguru interface
- Module-level logger instances work correctly
"""
import pytest
class TestLoguruImports:
"""Test Loguru imports and module-level loggers."""
def test_get_logger_import_from_logging_module(self):
"""Verify get_logger() can be imported from logging module."""
from app.core.logging import get_logger
logger = get_logger(__name__)
assert logger is not None
assert hasattr(logger, "bind")
assert hasattr(logger, "info")
assert hasattr(logger, "error")
assert hasattr(logger, "warning")
assert hasattr(logger, "debug")
def test_logger_in_middleware_module(self):
"""Verify logger works in middleware module."""
from app.core.middleware import logger
assert logger is not None
assert hasattr(logger, "bind")
assert callable(logger.bind)
def test_logger_in_service_modules(self):
"""Verify loggers work across different service modules."""
# These imports will fail if logging setup is broken
try:
from app.services.hf_streaming_summarizer import logger as hf_logger
except ImportError:
pytest.skip("HF streaming summarizer not available")
assert hf_logger is not None
assert hasattr(hf_logger, "bind")
def test_request_logger_class_available(self):
"""Verify RequestLogger class can be imported."""
from app.core.logging import RequestLogger
req_logger = RequestLogger()
assert hasattr(req_logger, "log_request")
assert hasattr(req_logger, "log_response")
assert hasattr(req_logger, "log_error")
def test_get_logger_with_different_module_names(self):
"""Verify get_logger() works with different module names."""
from app.core.logging import get_logger
logger1 = get_logger("module1")
logger2 = get_logger("module2")
logger3 = get_logger("app.services.test")
# All should be valid loggers
assert logger1 is not None
assert logger2 is not None
assert logger3 is not None
# All should have bind method
assert hasattr(logger1, "bind")
assert hasattr(logger2, "bind")
assert hasattr(logger3, "bind")
def test_logger_bind_method_works(self):
"""Verify logger.bind() method works correctly."""
from app.core.logging import get_logger
logger = get_logger(__name__)
# Bind should return a logger-like object
bound_logger = logger.bind(test_field="value", request_id="test-123")
assert bound_logger is not None
assert hasattr(bound_logger, "info")
assert hasattr(bound_logger, "error")
# Should be able to log without errors
bound_logger.info("Test message")
def test_logger_methods_callable(self):
"""Verify all standard logger methods are callable."""
from app.core.logging import get_logger
logger = get_logger(__name__)
assert callable(logger.info)
assert callable(logger.debug)
assert callable(logger.warning)
assert callable(logger.error)
assert callable(logger.critical)
assert callable(logger.exception)
assert callable(logger.bind)
def test_request_logger_methods_callable(self):
"""Verify RequestLogger methods are callable."""
from app.core.logging import RequestLogger
req_logger = RequestLogger()
assert callable(req_logger.log_request)
assert callable(req_logger.log_response)
assert callable(req_logger.log_error)
def test_context_var_import(self):
"""Verify request_id_var can be imported."""
from app.core.logging import request_id_var
assert request_id_var is not None
# Should be a ContextVar
assert hasattr(request_id_var, "get")
assert hasattr(request_id_var, "set")
def test_setup_logging_function_exists(self):
"""Verify setup_logging() function exists and is callable."""
from app.core.logging import setup_logging
assert callable(setup_logging)
# Should be able to call without errors
setup_logging()