From 09530e61a0035192ca8bcdebc5ead13d14c16eb0 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Fri, 1 Dec 2017 11:00:45 -0500 Subject: Fixed #28869 -- Made tagged test classes and methods inherit tags from parents. --- tests/test_runner/test_discover_runner.py | 12 +++++++++ tests/test_runner_apps/tagged/tests_inheritance.py | 29 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 tests/test_runner_apps/tagged/tests_inheritance.py (limited to 'tests') diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py index d897344d16..5efcbe4f5d 100644 --- a/tests/test_runner/test_discover_runner.py +++ b/tests/test_runner/test_discover_runner.py @@ -198,3 +198,15 @@ class DiscoverRunnerTest(TestCase): self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0) runner = DiscoverRunner(exclude_tags=['slow']) self.assertEqual(runner.build_suite(['test_runner_apps.tagged.tests']).countTestCases(), 0) + + def test_tag_inheritance(self): + def count_tests(**kwargs): + suite = DiscoverRunner(**kwargs).build_suite(['test_runner_apps.tagged.tests_inheritance']) + return suite.countTestCases() + + self.assertEqual(count_tests(tags=['foo']), 4) + self.assertEqual(count_tests(tags=['bar']), 2) + self.assertEqual(count_tests(tags=['baz']), 2) + self.assertEqual(count_tests(tags=['foo'], exclude_tags=['bar']), 2) + self.assertEqual(count_tests(tags=['foo'], exclude_tags=['bar', 'baz']), 1) + self.assertEqual(count_tests(exclude_tags=['foo']), 0) diff --git a/tests/test_runner_apps/tagged/tests_inheritance.py b/tests/test_runner_apps/tagged/tests_inheritance.py new file mode 100644 index 0000000000..59e564202d --- /dev/null +++ b/tests/test_runner_apps/tagged/tests_inheritance.py @@ -0,0 +1,29 @@ +from unittest import TestCase + +from django.test import tag + + +@tag('foo') +class FooBase(TestCase): + pass + + +class Foo(FooBase): + + def test_no_new_tags(self): + pass + + @tag('baz') + def test_new_func_tag(self): + pass + + +@tag('bar') +class FooBar(FooBase): + + def test_new_class_tag_only(self): + pass + + @tag('baz') + def test_new_class_and_func_tags(self): + pass -- cgit v1.3