Add new filtering() method to LogCaptureFixture class (#11625)

Fixes #11610
This commit is contained in:
Jens Tröger
2023-11-24 22:38:34 +10:00
committed by GitHub
parent a42530a09d
commit acab13fcc9
4 changed files with 39 additions and 2 deletions

View File

@@ -564,6 +564,22 @@ class LogCaptureFixture:
self.handler.setLevel(handler_orig_level)
logging.disable(original_disable_level)
@contextmanager
def filtering(self, filter_: logging.Filter) -> Generator[None, None, None]:
"""Context manager that temporarily adds the given filter to the caplog's
:meth:`handler` for the 'with' statement block, and removes that filter at the
end of the block.
:param filter_: A custom :class:`logging.Filter` object.
.. versionadded:: 7.5
"""
self.handler.addFilter(filter_)
try:
yield
finally:
self.handler.removeFilter(filter_)
@fixture
def caplog(request: FixtureRequest) -> Generator[LogCaptureFixture, None, None]: