From ebed9ee8d5e4268d9393261633b2c23cffd426fc Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Thu, 4 Aug 2016 10:26:21 -0700 Subject: [PATCH] Fixed #26981 -- Added DiscoverRunner.get_test_runner_kwargs(). --- django/test/runner.py | 16 ++++++++++------ docs/releases/1.11.txt | 3 ++- docs/topics/testing/advanced.txt | 7 +++++++ tests/test_runner/test_discover_runner.py | 3 +++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/django/test/runner.py b/django/test/runner.py index cd9229606d..1e98c51df4 100644 --- a/django/test/runner.py +++ b/django/test/runner.py @@ -503,13 +503,17 @@ class DiscoverRunner(object): def get_resultclass(self): return DebugSQLTextTestResult if self.debug_sql else None - def run_suite(self, suite, **kwargs): - resultclass = self.get_resultclass() - return self.test_runner( - verbosity=self.verbosity, + def get_test_runner_kwargs(self): + return dict( failfast=self.failfast, - resultclass=resultclass, - ).run(suite) + resultclass=self.get_resultclass(), + verbosity=self.verbosity, + ) + + def run_suite(self, suite, **kwargs): + kwargs = self.get_test_runner_kwargs() + runner = self.test_runner(**kwargs) + return runner.run(suite) def teardown_databases(self, old_config, **kwargs): """ diff --git a/docs/releases/1.11.txt b/docs/releases/1.11.txt index 3c220cc22d..cbaf1d5920 100644 --- a/docs/releases/1.11.txt +++ b/docs/releases/1.11.txt @@ -255,7 +255,8 @@ Templates Tests ~~~~~ -* ... +* Added :meth:`.DiscoverRunner.get_test_runner_kwargs` to allow customizing the + keyword arguments passed to the test runner. URLs ~~~~ diff --git a/docs/topics/testing/advanced.txt b/docs/topics/testing/advanced.txt index d69e95e5a8..8cfb82db67 100644 --- a/docs/topics/testing/advanced.txt +++ b/docs/topics/testing/advanced.txt @@ -568,6 +568,13 @@ Methods Returns the result produced by the running the test suite. +.. method:: DiscoverRunner.get_test_runner_kwargs() + + .. versionadded:: 1.11 + + Returns the keyword arguments to instantiate the + ``DiscoverRunner.test_runner`` with. + .. method:: DiscoverRunner.teardown_databases(old_config, **kwargs) Destroys the test databases, restoring pre-test conditions. diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py index 37c18b2f8f..15f71ba1c1 100644 --- a/tests/test_runner/test_discover_runner.py +++ b/tests/test_runner/test_discover_runner.py @@ -157,6 +157,9 @@ class DiscoverRunnerTest(TestCase): self.assertIn('test_2', suite[8].id(), msg="Methods of unittest cases should be reversed.") + def test_overridable_get_test_runner_kwargs(self): + self.assertIsInstance(DiscoverRunner().get_test_runner_kwargs(), dict) + def test_overridable_test_suite(self): self.assertEqual(DiscoverRunner().test_suite, TestSuite)