64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
"""Tests for Logger module."""
|
|
|
|
import logging
|
|
import os
|
|
import tempfile
|
|
|
|
from Application.Logger import get_logger, setup_logger
|
|
|
|
|
|
class TestLogger:
|
|
"""Test suite for Logger utility functions."""
|
|
|
|
def test_setup_logger_default(self):
|
|
"""Test setting up logger with default parameters."""
|
|
logger = setup_logger(name="test_logger_1")
|
|
assert logger is not None
|
|
assert logger.name == "test_logger_1"
|
|
assert logger.level == logging.INFO
|
|
|
|
def test_setup_logger_with_level(self):
|
|
"""Test setting up logger with custom level."""
|
|
logger = setup_logger(name="test_logger_2", level=logging.DEBUG)
|
|
assert logger.level == logging.DEBUG
|
|
|
|
def test_setup_logger_with_file(self):
|
|
"""Test setting up logger with file output."""
|
|
with tempfile.NamedTemporaryFile(mode="w", suffix=".log", delete=False) as f:
|
|
log_file = f.name
|
|
|
|
try:
|
|
logger = setup_logger(name="test_logger_3", log_file=log_file)
|
|
logger.info("Test message")
|
|
|
|
# Verify file was created and has content
|
|
with open(log_file, "r") as f:
|
|
content = f.read()
|
|
assert "Test message" in content
|
|
finally:
|
|
# Cleanup the log file
|
|
if os.path.exists(log_file):
|
|
os.unlink(log_file)
|
|
|
|
def test_get_logger(self):
|
|
"""Test getting an existing logger."""
|
|
# First create a logger
|
|
setup_logger(name="test_logger_4")
|
|
|
|
# Then retrieve it
|
|
logger = get_logger("test_logger_4")
|
|
assert logger is not None
|
|
assert logger.name == "test_logger_4"
|
|
|
|
def test_logger_prevents_duplicate_handlers(self):
|
|
"""Test that setting up the same logger twice doesn't add duplicate handlers."""
|
|
logger1 = setup_logger(name="test_logger_5")
|
|
handler_count_1 = len(logger1.handlers)
|
|
|
|
# Setup the same logger again
|
|
logger2 = setup_logger(name="test_logger_5")
|
|
handler_count_2 = len(logger2.handlers)
|
|
|
|
# Should have the same number of handlers
|
|
assert handler_count_1 == handler_count_2
|