From 4ab5a43785418a8bb46bcc480a1cf73bde631e2f Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Sat, 11 Jun 2011 15:27:12 +0000 Subject: [PATCH] Fixed #14049 -- Made our TestCase subclasses not load database fixtures (nor set up custom URLconfs) for test methods that are going to be skipped. Thanks zimnyx for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@16369 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/test/testcases.py | 5 +++++ tests/regressiontests/test_utils/tests.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) 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