diff --git a/tests/test_utils_logcfg.py b/tests/test_utils_logcfg.py index 3066b669f..6cc0e395a 100644 --- a/tests/test_utils_logcfg.py +++ b/tests/test_utils_logcfg.py @@ -1,6 +1,6 @@ import logging import logzero -from logzero import logger +from logzero import setup_logger import pytest import tempfile import subprocess @@ -50,18 +50,17 @@ def test_custom_log_outputs(levelname, logfunc, message, capsys): # Test subprocess: top-level import logs only once -def test_import_logging_once_per_module(caplog): - caplog.set_level("TRACE") +def test_import_logging_once_per_module(monkeypatch): + captured = [] - # Attach a logging handler so caplog can see logzero logs - handler = logging.StreamHandler() - logger.addHandler(handler) + # Replace the trace method with a capturing lambda + monkeypatch.setattr(logcfg.log, "trace", lambda msg: captured.append(msg)) - import sys, importlib + # Force re-import so the hook is triggered for m in ("math", "io", "random"): sys.modules.pop(m, None) importlib.import_module(m) - logs = [rec.message for rec in caplog.records] for mod in ["math", "io", "random"]: - assert any(f"importing: {mod}" in msg for msg in logs), logs \ No newline at end of file + matches = [msg for msg in captured if f"importing: {mod}" in msg] + assert len(matches) == 1, f"Expected 1 log for {mod}, got {len(matches)}; captured={captured}" \ No newline at end of file