mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #32641 -- Made DiscoverRunner print the number of found tests.
Thanks Chris Jerdonek for reviews.
This commit is contained in:
parent
78eaae9bf1
commit
a815a6a315
1
AUTHORS
1
AUTHORS
@ -342,6 +342,7 @@ answer newbie questions, and generally made Django that much better:
|
|||||||
Gerardo Orozco <gerardo.orozco.mosqueda@gmail.com>
|
Gerardo Orozco <gerardo.orozco.mosqueda@gmail.com>
|
||||||
Gil Gonçalves <lursty@gmail.com>
|
Gil Gonçalves <lursty@gmail.com>
|
||||||
Girish Kumar <girishkumarkh@gmail.com>
|
Girish Kumar <girishkumarkh@gmail.com>
|
||||||
|
Girish Sontakke <girishsontakke7@gmail.com>
|
||||||
Gisle Aas <gisle@aas.no>
|
Gisle Aas <gisle@aas.no>
|
||||||
Glenn Maynard <glenn@zewt.org>
|
Glenn Maynard <glenn@zewt.org>
|
||||||
glin@seznam.cz
|
glin@seznam.cz
|
||||||
|
@ -650,7 +650,9 @@ class DiscoverRunner:
|
|||||||
# _FailedTest objects include things like test modules that couldn't be
|
# _FailedTest objects include things like test modules that couldn't be
|
||||||
# found or that couldn't be loaded due to syntax errors.
|
# found or that couldn't be loaded due to syntax errors.
|
||||||
test_types = (unittest.loader._FailedTest, *self.reorder_by)
|
test_types = (unittest.loader._FailedTest, *self.reorder_by)
|
||||||
all_tests = reorder_tests(all_tests, test_types, self.reverse)
|
all_tests = list(reorder_tests(all_tests, test_types, self.reverse))
|
||||||
|
if self.verbosity >= 1:
|
||||||
|
print('Found %d tests.' % len(all_tests))
|
||||||
suite = self.test_suite(all_tests)
|
suite = self.test_suite(all_tests)
|
||||||
|
|
||||||
if self.parallel > 1:
|
if self.parallel > 1:
|
||||||
|
@ -58,28 +58,28 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
DiscoverRunner().load_tests_for_label('test_discover_runner.py', {})
|
DiscoverRunner().load_tests_for_label('test_discover_runner.py', {})
|
||||||
|
|
||||||
def test_dotted_test_module(self):
|
def test_dotted_test_module(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests_sample'],
|
['test_runner_apps.sample.tests_sample'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
self.assertEqual(count, 4)
|
self.assertEqual(count, 4)
|
||||||
|
|
||||||
def test_dotted_test_class_vanilla_unittest(self):
|
def test_dotted_test_class_vanilla_unittest(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests_sample.TestVanillaUnittest'],
|
['test_runner_apps.sample.tests_sample.TestVanillaUnittest'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
self.assertEqual(count, 1)
|
self.assertEqual(count, 1)
|
||||||
|
|
||||||
def test_dotted_test_class_django_testcase(self):
|
def test_dotted_test_class_django_testcase(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests_sample.TestDjangoTestCase'],
|
['test_runner_apps.sample.tests_sample.TestDjangoTestCase'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
self.assertEqual(count, 1)
|
self.assertEqual(count, 1)
|
||||||
|
|
||||||
def test_dotted_test_method_django_testcase(self):
|
def test_dotted_test_method_django_testcase(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests_sample.TestDjangoTestCase.test_sample'],
|
['test_runner_apps.sample.tests_sample.TestDjangoTestCase.test_sample'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
@ -88,6 +88,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
def test_pattern(self):
|
def test_pattern(self):
|
||||||
count = DiscoverRunner(
|
count = DiscoverRunner(
|
||||||
pattern="*_tests.py",
|
pattern="*_tests.py",
|
||||||
|
verbosity=0,
|
||||||
).build_suite(['test_runner_apps.sample']).countTestCases()
|
).build_suite(['test_runner_apps.sample']).countTestCases()
|
||||||
|
|
||||||
self.assertEqual(count, 1)
|
self.assertEqual(count, 1)
|
||||||
@ -115,13 +116,14 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
]:
|
]:
|
||||||
with self.subTest(pattern):
|
with self.subTest(pattern):
|
||||||
suite = DiscoverRunner(
|
suite = DiscoverRunner(
|
||||||
test_name_patterns=pattern
|
test_name_patterns=pattern,
|
||||||
|
verbosity=0,
|
||||||
).build_suite(['test_runner_apps.simple'])
|
).build_suite(['test_runner_apps.simple'])
|
||||||
self.assertEqual(expected, self.get_test_methods_names(suite))
|
self.assertEqual(expected, self.get_test_methods_names(suite))
|
||||||
|
|
||||||
def test_file_path(self):
|
def test_file_path(self):
|
||||||
with change_cwd(".."):
|
with change_cwd(".."):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps/sample/'],
|
['test_runner_apps/sample/'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
@ -133,21 +135,21 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
working directory.
|
working directory.
|
||||||
"""
|
"""
|
||||||
with change_cwd("."):
|
with change_cwd("."):
|
||||||
suite = DiscoverRunner().build_suite([])
|
suite = DiscoverRunner(verbosity=0).build_suite([])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
suite._tests[0].id().split(".")[0],
|
suite._tests[0].id().split(".")[0],
|
||||||
os.path.basename(os.getcwd()),
|
os.path.basename(os.getcwd()),
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_empty_test_case(self):
|
def test_empty_test_case(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests_sample.EmptyTestCase'],
|
['test_runner_apps.sample.tests_sample.EmptyTestCase'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
self.assertEqual(count, 0)
|
self.assertEqual(count, 0)
|
||||||
|
|
||||||
def test_discovery_on_package(self):
|
def test_discovery_on_package(self):
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.tests'],
|
['test_runner_apps.sample.tests'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
@ -161,7 +163,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
This results in tests from adjacent modules being run when they
|
This results in tests from adjacent modules being run when they
|
||||||
should not. The discover runner avoids this behavior.
|
should not. The discover runner avoids this behavior.
|
||||||
"""
|
"""
|
||||||
count = DiscoverRunner().build_suite(
|
count = DiscoverRunner(verbosity=0).build_suite(
|
||||||
['test_runner_apps.sample.empty'],
|
['test_runner_apps.sample.empty'],
|
||||||
).countTestCases()
|
).countTestCases()
|
||||||
|
|
||||||
@ -169,7 +171,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
|
|
||||||
def test_testcase_ordering(self):
|
def test_testcase_ordering(self):
|
||||||
with change_cwd(".."):
|
with change_cwd(".."):
|
||||||
suite = DiscoverRunner().build_suite(['test_runner_apps/sample/'])
|
suite = DiscoverRunner(verbosity=0).build_suite(['test_runner_apps/sample/'])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
suite._tests[0].__class__.__name__,
|
suite._tests[0].__class__.__name__,
|
||||||
'TestDjangoTestCase',
|
'TestDjangoTestCase',
|
||||||
@ -187,9 +189,10 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
"""
|
"""
|
||||||
base_app = 'forms_tests'
|
base_app = 'forms_tests'
|
||||||
sub_app = 'forms_tests.field_tests'
|
sub_app = 'forms_tests.field_tests'
|
||||||
|
runner = DiscoverRunner(verbosity=0)
|
||||||
with self.modify_settings(INSTALLED_APPS={'append': sub_app}):
|
with self.modify_settings(INSTALLED_APPS={'append': sub_app}):
|
||||||
single = DiscoverRunner().build_suite([base_app]).countTestCases()
|
single = runner.build_suite([base_app]).countTestCases()
|
||||||
dups = DiscoverRunner().build_suite([base_app, sub_app]).countTestCases()
|
dups = runner.build_suite([base_app, sub_app]).countTestCases()
|
||||||
self.assertEqual(single, dups)
|
self.assertEqual(single, dups)
|
||||||
|
|
||||||
def test_reverse(self):
|
def test_reverse(self):
|
||||||
@ -197,7 +200,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
Reverse should reorder tests while maintaining the grouping specified
|
Reverse should reorder tests while maintaining the grouping specified
|
||||||
by ``DiscoverRunner.reorder_by``.
|
by ``DiscoverRunner.reorder_by``.
|
||||||
"""
|
"""
|
||||||
runner = DiscoverRunner(reverse=True)
|
runner = DiscoverRunner(reverse=True, verbosity=0)
|
||||||
suite = runner.build_suite(
|
suite = runner.build_suite(
|
||||||
test_labels=('test_runner_apps.sample', 'test_runner_apps.simple'))
|
test_labels=('test_runner_apps.sample', 'test_runner_apps.simple'))
|
||||||
self.assertIn('test_runner_apps.simple', next(iter(suite)).id(),
|
self.assertIn('test_runner_apps.simple', next(iter(suite)).id(),
|
||||||
@ -223,7 +226,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
|
|
||||||
def test_build_suite_failed_tests_first(self):
|
def test_build_suite_failed_tests_first(self):
|
||||||
# The "doesnotexist" label results in a _FailedTest instance.
|
# The "doesnotexist" label results in a _FailedTest instance.
|
||||||
suite = DiscoverRunner().build_suite(
|
suite = DiscoverRunner(verbosity=0).build_suite(
|
||||||
test_labels=['test_runner_apps.sample', 'doesnotexist'],
|
test_labels=['test_runner_apps.sample', 'doesnotexist'],
|
||||||
)
|
)
|
||||||
tests = list(suite)
|
tests = list(suite)
|
||||||
@ -243,23 +246,24 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
self.assertEqual(DiscoverRunner().test_loader, defaultTestLoader)
|
self.assertEqual(DiscoverRunner().test_loader, defaultTestLoader)
|
||||||
|
|
||||||
def test_tags(self):
|
def test_tags(self):
|
||||||
runner = DiscoverRunner(tags=['core'])
|
runner = DiscoverRunner(tags=['core'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 1)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 1)
|
||||||
runner = DiscoverRunner(tags=['fast'])
|
runner = DiscoverRunner(tags=['fast'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 2)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 2)
|
||||||
runner = DiscoverRunner(tags=['slow'])
|
runner = DiscoverRunner(tags=['slow'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 2)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 2)
|
||||||
|
|
||||||
def test_exclude_tags(self):
|
def test_exclude_tags(self):
|
||||||
runner = DiscoverRunner(tags=['fast'], exclude_tags=['core'])
|
runner = DiscoverRunner(tags=['fast'], exclude_tags=['core'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 1)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 1)
|
||||||
runner = DiscoverRunner(tags=['fast'], exclude_tags=['slow'])
|
runner = DiscoverRunner(tags=['fast'], exclude_tags=['slow'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0)
|
||||||
runner = DiscoverRunner(exclude_tags=['slow'])
|
runner = DiscoverRunner(exclude_tags=['slow'], verbosity=0)
|
||||||
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0)
|
self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0)
|
||||||
|
|
||||||
def test_tag_inheritance(self):
|
def test_tag_inheritance(self):
|
||||||
def count_tests(**kwargs):
|
def count_tests(**kwargs):
|
||||||
|
kwargs.setdefault('verbosity', 0)
|
||||||
suite = DiscoverRunner(**kwargs).build_suite(['test_runner_apps.tagged.tests_inheritance'])
|
suite = DiscoverRunner(**kwargs).build_suite(['test_runner_apps.tagged.tests_inheritance'])
|
||||||
return suite.countTestCases()
|
return suite.countTestCases()
|
||||||
|
|
||||||
@ -273,7 +277,7 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
def test_tag_fail_to_load(self):
|
def test_tag_fail_to_load(self):
|
||||||
with self.assertRaises(SyntaxError):
|
with self.assertRaises(SyntaxError):
|
||||||
import_module('test_runner_apps.tagged.tests_syntax_error')
|
import_module('test_runner_apps.tagged.tests_syntax_error')
|
||||||
runner = DiscoverRunner(tags=['syntax_error'])
|
runner = DiscoverRunner(tags=['syntax_error'], verbosity=0)
|
||||||
# A label that doesn't exist or cannot be loaded due to syntax errors
|
# A label that doesn't exist or cannot be loaded due to syntax errors
|
||||||
# is always considered matching.
|
# is always considered matching.
|
||||||
suite = runner.build_suite(['doesnotexist', 'test_runner_apps.tagged'])
|
suite = runner.build_suite(['doesnotexist', 'test_runner_apps.tagged'])
|
||||||
@ -294,6 +298,15 @@ class DiscoverRunnerTests(SimpleTestCase):
|
|||||||
runner.build_suite(['test_runner_apps.tagged.tests'])
|
runner.build_suite(['test_runner_apps.tagged.tests'])
|
||||||
self.assertIn('Excluding test tag(s): bar, foo.\n', stdout.getvalue())
|
self.assertIn('Excluding test tag(s): bar, foo.\n', stdout.getvalue())
|
||||||
|
|
||||||
|
def test_number_of_tests_found_displayed(self):
|
||||||
|
runner = DiscoverRunner()
|
||||||
|
with captured_stdout() as stdout:
|
||||||
|
runner.build_suite([
|
||||||
|
'test_runner_apps.sample.tests_sample.TestDjangoTestCase',
|
||||||
|
'test_runner_apps.simple',
|
||||||
|
])
|
||||||
|
self.assertIn('Found 14 tests.\n', stdout.getvalue())
|
||||||
|
|
||||||
def test_pdb_with_parallel(self):
|
def test_pdb_with_parallel(self):
|
||||||
msg = (
|
msg = (
|
||||||
'You cannot use --pdb with parallel tests; pass --parallel=1 to '
|
'You cannot use --pdb with parallel tests; pass --parallel=1 to '
|
||||||
@ -371,8 +384,8 @@ class DiscoverRunnerGetDatabasesTests(SimpleTestCase):
|
|||||||
skip_msg = 'Skipping setup of unused database(s): '
|
skip_msg = 'Skipping setup of unused database(s): '
|
||||||
|
|
||||||
def get_databases(self, test_labels):
|
def get_databases(self, test_labels):
|
||||||
suite = self.runner.build_suite(test_labels)
|
|
||||||
with captured_stdout() as stdout:
|
with captured_stdout() as stdout:
|
||||||
|
suite = self.runner.build_suite(test_labels)
|
||||||
databases = self.runner.get_databases(suite)
|
databases = self.runner.get_databases(suite)
|
||||||
return databases, stdout.getvalue()
|
return databases, stdout.getvalue()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user