diff --git a/changelog/3998.bugfix.rst b/changelog/3998.bugfix.rst new file mode 100644 index 00000000000..e696f7087bd --- /dev/null +++ b/changelog/3998.bugfix.rst @@ -0,0 +1 @@ +Fix issue that prevented some caplog properties (for example ``record_tuples``) from being available when entering the debugger with ``--pdb``. diff --git a/src/_pytest/logging.py b/src/_pytest/logging.py index c9c65c4c18d..2d0f54a6454 100644 --- a/src/_pytest/logging.py +++ b/src/_pytest/logging.py @@ -445,8 +445,8 @@ def _runtest_for(self, item, when): try: yield # run test finally: - del item.catch_log_handler if when == "teardown": + del item.catch_log_handler del item.catch_log_handlers if self.print_logs: diff --git a/testing/test_pdb.py b/testing/test_pdb.py index ed1c49a1acf..246f514b4a9 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -397,6 +397,24 @@ def test_1(capsys): child.read() self.flush(child) + def test_pdb_with_caplog_on_pdb_invocation(self, testdir): + p1 = testdir.makepyfile( + """ + def test_1(capsys, caplog): + import logging + logging.getLogger(__name__).warning("some_warning") + assert 0 + """ + ) + child = testdir.spawn_pytest("--pdb %s" % str(p1)) + child.send("caplog.record_tuples\n") + child.expect_exact( + "[('test_pdb_with_caplog_on_pdb_invocation', 30, 'some_warning')]" + ) + child.sendeof() + child.read() + self.flush(child) + def test_set_trace_capturing_afterwards(self, testdir): p1 = testdir.makepyfile( """