summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.rst5
-rw-r--r--_pytest/unittest.py2
-rw-r--r--doc/en/unittest.rst7
-rw-r--r--testing/test_pdb.py4
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()