From 069f32a8c452e7dbd4d10d4da2c142dd24bb5953 Mon Sep 17 00:00:00 2001 From: Brian Maissy Date: Mon, 12 Feb 2018 22:05:46 +0200 Subject: [PATCH] print captured logs before entering pdb --- _pytest/debugging.py | 5 +++++ changelog/3204.feature | 1 + testing/test_pdb.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 changelog/3204.feature diff --git a/_pytest/debugging.py b/_pytest/debugging.py index 43472f23b..d74cbe186 100644 --- a/_pytest/debugging.py +++ b/_pytest/debugging.py @@ -97,6 +97,11 @@ def _enter_pdb(node, excinfo, rep): tw.sep(">", "captured stderr") tw.line(captured_stderr) + captured_logs = rep.caplog + if len(captured_logs) > 0: + tw.sep(">", "captured logs") + tw.line(captured_logs) + tw.sep(">", "traceback") rep.toterminal(tw) tw.sep(">", "entering PDB") diff --git a/changelog/3204.feature b/changelog/3204.feature new file mode 100644 index 000000000..8ab129a12 --- /dev/null +++ b/changelog/3204.feature @@ -0,0 +1 @@ +Captured logs are printed before entering pdb. diff --git a/testing/test_pdb.py b/testing/test_pdb.py index d882c2cf6..f6d03d6bb 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -187,6 +187,22 @@ class TestPDB(object): assert "captured stderr" not in output self.flush(child) + def test_pdb_print_captured_logs(self, testdir): + p1 = testdir.makepyfile(""" + def test_1(): + import logging + logging.warn("get rekt") + assert False + """) + child = testdir.spawn_pytest("--pdb %s" % p1) + child.expect("captured logs") + child.expect("get rekt") + child.expect("(Pdb)") + child.sendeof() + rest = child.read().decode("utf8") + assert "1 failed" in rest + self.flush(child) + def test_pdb_interaction_exception(self, testdir): p1 = testdir.makepyfile(""" import pytest