From 696a9112beacdaf970d06809dcb0fd04e69325e9 Mon Sep 17 00:00:00 2001 From: mbyt Date: Wed, 31 Aug 2016 22:33:47 +0200 Subject: [PATCH] integrating review commets of @nicoddemus plus small scale refactoring --- CHANGELOG.rst | 5 +++-- _pytest/unittest.py | 2 +- doc/en/unittest.rst | 7 +++++++ testing/test_pdb.py | 4 ++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7d6db671b..44fc9f259 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -18,9 +18,10 @@ if a test suite uses ``pytest_plugins`` to load internal plugins (`#1888`_). Thanks `@jaraco`_ for the report and `@nicoddemus`_ for the PR (`#1891`_). -* Do not call tearDown (and cleanups) when running unittest with ``--pdb`` +* Do not call tearDown and cleanups when running tests from + ``unittest.TestCase`` subclasses with ``--pdb`` enabled. This allows proper post mortem debugging for all applications - which have significant logic in their tearDown method (`#1890`_). Thanks + which have significant logic in their tearDown machinery (`#1890`_). Thanks `@mbyt`_ for the PR. * diff --git a/_pytest/unittest.py b/_pytest/unittest.py index 5e87441cc..47868f448 100644 --- a/_pytest/unittest.py +++ b/_pytest/unittest.py @@ -153,7 +153,7 @@ class TestCaseFunction(pytest.Function): if self.config.pluginmanager.get_plugin("pdbinvoke") is None: self._testcase(result=self) else: - # disables tearDown and cleanups for post mortem debugging + # disables tearDown and cleanups for post mortem debugging (see #1890) self._testcase.debug() diff --git a/doc/en/unittest.rst b/doc/en/unittest.rst index 9e0b4973d..e4c09ee24 100644 --- a/doc/en/unittest.rst +++ b/doc/en/unittest.rst @@ -33,6 +33,13 @@ distributing tests to multiple CPUs via the ``-nNUM`` option if you installed the ``pytest-xdist`` plugin. Please refer to the general ``pytest`` documentation for many more examples. +.. note:: + + Running tests from ``unittest.TestCase`` subclasses with ``--pdb`` will + disable tearDown and cleanup methods for the case that an Exception is + occurs. This allows proper post mortem debugging for all applications + which have significant logic in their tearDown machinery. + Mixing pytest fixtures into unittest.TestCase style tests ----------------------------------------------------------- diff --git a/testing/test_pdb.py b/testing/test_pdb.py index a0fbc473e..d79d71262 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -86,7 +86,7 @@ class TestPDB: def tearDown(self): self.filename = None def test_false(self): - self.filename = 'bla' + '.txt' + self.filename = 'debug' + '.me' assert 0 """) child = testdir.spawn_pytest("--pdb %s" % p1) @@ -94,7 +94,7 @@ class TestPDB: child.sendline('p self.filename') child.sendeof() rest = child.read().decode("utf8") - assert 'bla.txt' in rest + assert 'debug.me' in rest if child.isalive(): child.wait()