From 29ab09c09763f5cef2a030f253a86bbbe399fa73 Mon Sep 17 00:00:00 2001 From: Pablo Santiago Blum de Aguiar Date: Wed, 8 Apr 2020 20:35:05 +0200 Subject: [PATCH] Call cleanup functions if explicit teardown is needed Fix #6947 --- AUTHORS | 1 + changelog/6947.bugfix.rst | 1 + src/_pytest/unittest.py | 1 + testing/test_unittest.py | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+) create mode 100644 changelog/6947.bugfix.rst diff --git a/AUTHORS b/AUTHORS index 7c791cde8c..2d9c11b63f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -211,6 +211,7 @@ Omar Kohl Omer Hadari Ondřej Súkup Oscar Benjamin +Pablo Aguiar Patrick Hayes Pauli Virtanen Paweł Adamczak diff --git a/changelog/6947.bugfix.rst b/changelog/6947.bugfix.rst new file mode 100644 index 0000000000..f0995f0087 --- /dev/null +++ b/changelog/6947.bugfix.rst @@ -0,0 +1 @@ +Call cleanup functions on test failure. diff --git a/src/_pytest/unittest.py b/src/_pytest/unittest.py index 2047876e5f..a839b0b545 100644 --- a/src/_pytest/unittest.py +++ b/src/_pytest/unittest.py @@ -122,6 +122,7 @@ def setup(self): def teardown(self): if self._needs_explicit_tearDown: self._testcase.tearDown() + self._testcase.doCleanups() self._testcase = None self._obj = None diff --git a/testing/test_unittest.py b/testing/test_unittest.py index de51f7bd10..a9f3749376 100644 --- a/testing/test_unittest.py +++ b/testing/test_unittest.py @@ -254,6 +254,24 @@ def test_method(self): ) +def test_method_and_cleanup_failing_reporting(testdir): + testdir.makepyfile( + """ + import unittest + class TC(unittest.TestCase): + def setUp(self): + self.addCleanup(lambda: print("someCleanup()")) + def test_method(self): + assert False + """ + ) + result = testdir.runpytest("-s") + assert result.ret == 1 + result.stdout.fnmatch_lines( + ["*someCleanup()*", "*test_method*", "*assert False*", "*1 failed*"] + ) + + def test_setup_failure_is_shown(testdir): testdir.makepyfile( """