Files
AI/참고/guardrails-main/tests/unit_tests/test_logger.py
2026-05-12 19:40:31 +09:00

103 lines
2.6 KiB
Python

import logging
import logging.config
def test_logger_empty_init(mocker):
log_config_spy = mocker.spy(logging.config, "dictConfig")
from guardrails.logger import logger
assert logger.level == logging.NOTSET
# It's not possible to retrieve the logging configuration
# in an easily machine readable format
# Instead spy on logging.config.dictConfig
assert log_config_spy.call_count == 0
def test_logger_is_singleton():
from guardrails.logger import get_logger, logger
logger_1 = get_logger()
logger_2 = get_logger()
assert logger == logger_1
assert logger_1 == logger_2
def test_set_level(mocker):
from guardrails.logger import logger, logger_config, set_level
set_level(logging.NOTSET)
setLevel_spy = mocker.spy(logger, "setLevel")
set_level(logging.WARNING)
assert logger.level == logging.WARNING
assert logger_config.level == logging.WARNING
assert setLevel_spy.call_count == 1
set_level(logging.NOTSET)
def test_set_config(mocker):
log_config_spy = mocker.patch("logging.config.dictConfig")
from guardrails.logger import set_config
new_config = {"version": 1}
set_config(new_config)
assert log_config_spy.call_count == 1
def test_set_scope():
from guardrails.logger import (
base_scope,
get_scope_handler,
logger_config,
set_scope,
)
set_scope(base_scope)
scope_handler = get_scope_handler()
assert logger_config.scope == base_scope
assert scope_handler.scope == base_scope
set_scope("custom")
assert logger_config.scope == "custom"
assert scope_handler.scope == "custom"
"""
Since tests run in parallel, we need a distinct logger and handler instance
for this test in order for the assertions to work.
"""
def test_scope_handler():
from guardrails.logger import ScopeHandler, base_scope
test_logger = logging.getLogger("test_scope_handler")
test_logger.setLevel(logging.INFO)
new_handler = ScopeHandler()
test_logger.addHandler(new_handler)
test_logger.info("test log 1")
new_handler.set_scope("test-2")
test_logger.warning("test log 2")
base_logs = new_handler.get_logs(base_scope)
assert len(base_logs) == 1
assert base_logs[0].getMessage() == "test log 1"
test_2_logs = new_handler.get_logs("test-2")
assert len(test_2_logs) == 1
assert test_2_logs[0].getMessage() == "test log 2"
all_logs = new_handler.get_logs("all")
assert len(all_logs) == 2
assert all_logs[0].getMessage() == "test log 1"
assert all_logs[1].getMessage() == "test log 2"