python
data_error
ai_generated
true
AssertionError: assert 'expected log' in ''
ID: python/pytest-caplog-no-output
80%Fix Rate
86%Confidence
0Evidence
2024-04-11First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 7.x | active | — | — | — |
| 8.x | active | — | — | — |
Root Cause
The logger's level is higher than the message level, or logging was configured with propagate=False, so caplog does not capture the record. caplog defaults to WARNING.
generic中文
logger 的级别高于消息级别,或 logging 配置了 propagate=False,导致 caplog 无法捕获记录。caplog 默认级别为 WARNING。
Workarounds
-
93% success
def test_logs(caplog): caplog.set_level(logging.INFO, logger='app') do_work() assert 'expected log' in caplog.text # app/logger.py logger = logging.getLogger('app') logger.propagate = True -
90% success
def test_logs(caplog): caplog.set_level(logging.INFO) do_work() assert any(r.message == 'expected log' for r in caplog.records)
Dead Ends
Common approaches that don't work:
-
70% fail
-s disables output capture, which actually makes caplog less likely to see logs from some handlers.
-
65% fail
May add a handler but caplog still relies on propagation and its own level; often ineffective.