From cc7f66594f6f04dbaf6d207d91cf7da378618070 Mon Sep 17 00:00:00 2001 From: Jonathan Lange Date: Mon, 16 Nov 2015 19:09:09 +0100 Subject: [PATCH] Allow tests to be run twice --- testtools/testcase.py | 2 ++ testtools/tests/test_testcase.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/testtools/testcase.py b/testtools/testcase.py index afb9c6c..c9b3a5f 100644 --- a/testtools/testcase.py +++ b/testtools/testcase.py @@ -639,6 +639,8 @@ class TestCase(unittest.TestCase): "super(%s, self).tearDown() from your tearDown()." % (sys.modules[self.__class__.__module__].__file__, self.__class__.__name__)) + self.__setup_called = False + self.__teardown_called = False return ret def _get_test_method(self): diff --git a/testtools/tests/test_testcase.py b/testtools/tests/test_testcase.py index 185b726..6907f0c 100644 --- a/testtools/tests/test_testcase.py +++ b/testtools/tests/test_testcase.py @@ -1265,6 +1265,18 @@ class TestSetupTearDown(TestCase): "...ValueError...File...testtools/tests/test_testcase.py...", ELLIPSIS)) + def test_runTwice(self): + # Tests can be run twice. + class NormalTest(TestCase): + def test_method(self): + pass + test = NormalTest('test_method') + result = unittest.TestResult() + test.run(result) + test.run(result) + self.expectThat(result.errors, HasLength(0)) + self.assertThat(result.testsRun, Equals(2)) + require_py27_minimum = skipIf( sys.version < '2.7',