Logging: Make pytest_runtest_logreport() available for logging

Signed-off-by: Andras Mitzki <andras.mitzki@balabit.com>
This commit is contained in:
Andras Mitzki 2019-02-20 16:51:09 +01:00
parent c8a87e48ab
commit b26b731498
3 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1 @@
Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed.

View File

@ -567,6 +567,11 @@ class LoggingPlugin(object):
with self._runtest_for(None, "finish"):
yield
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_logreport(self):
with self._runtest_for(None, "logreport"):
yield
@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_sessionfinish(self):
with self.live_logs_context():

View File

@ -1004,6 +1004,40 @@ def test_log_in_hooks(testdir):
assert "sessionfinish" in contents
def test_log_in_runtest_logreport(testdir):
log_file = testdir.tmpdir.join("pytest.log").strpath
testdir.makeini(
"""
[pytest]
log_file={}
log_file_level = INFO
log_cli=true
""".format(
log_file
)
)
testdir.makeconftest(
"""
import logging
logger = logging.getLogger(__name__)
def pytest_runtest_logreport(report):
logger.info("logreport")
"""
)
testdir.makepyfile(
"""
def test_first():
assert True
"""
)
testdir.runpytest()
with open(log_file) as rfh:
contents = rfh.read()
assert contents.count("logreport") == 3
def test_log_set_path(testdir):
report_dir_base = testdir.tmpdir.strpath