diff --git a/django/test/testcases.py b/django/test/testcases.py index bfa1aeb219..02717ffaa7 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -282,6 +282,11 @@ class TransactionTestCase(ut2.TestCase): set up. This means that user-defined Test Cases aren't required to include a call to super().setUp(). """ + testMethod = getattr(self, self._testMethodName) + if (getattr(self.__class__, "__unittest_skip__", False) or + getattr(testMethod, "__unittest_skip__", False)): + return + self.client = self.client_class() try: self._pre_setup() diff --git a/tests/regressiontests/test_utils/tests.py b/tests/regressiontests/test_utils/tests.py index f4b836a792..673295be37 100644 --- a/tests/regressiontests/test_utils/tests.py +++ b/tests/regressiontests/test_utils/tests.py @@ -3,6 +3,7 @@ from __future__ import with_statement import sys from django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature +from django.utils.unittest import skip from models import Person @@ -115,6 +116,21 @@ class SaveRestoreWarningState(TestCase): # Remove the filter we just added. self.restore_warnings_state() + +class SkippingExtraTests(TestCase): + fixtures = ['should_not_be_loaded.json'] + + # HACK: This depends on internals of our TestCase subclasses + def __call__(self, result=None): + # Detect fixture loading by counting SQL queries, should be zero + with self.assertNumQueries(0): + super(SkippingExtraTests, self).__call__(result) + + @skip("Fixture loading should not be performed for skipped tests.") + def test_fixtures_are_skipped(self): + pass + + __test__ = {"API_TEST": r""" # Some checks of the doctest output normalizer. # Standard doctests do fairly