summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSwastikTripathi <88632085+SwastikTripathi@users.noreply.github.com>2021-11-12 23:06:13 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-11-15 11:46:10 +0100
commit76f07b4fcfa570d194ee4ee8e20d56fd917998a7 (patch)
treed0e5ed12855147935a1553bbd8b857067a49e27f
parent560ff988dd6cff40381408c62494ca3eb9804f32 (diff)
Fixed #33278 -- Improved error for connection/query attempts against disallowed databases in tests.
-rw-r--r--django/test/testcases.py6
-rw-r--r--tests/test_utils/test_testcase.py8
-rw-r--r--tests/test_utils/test_transactiontestcase.py3
-rw-r--r--tests/test_utils/tests.py9
4 files changed, 16 insertions, 10 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 462cce2c81..7b5c7cdd78 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -139,13 +139,17 @@ class _AssertTemplateNotUsedContext(_AssertTemplateUsedContext):
return '%s was rendered.' % self.template_name
+class DatabaseOperationForbidden(AssertionError):
+ pass
+
+
class _DatabaseFailure:
def __init__(self, wrapped, message):
self.wrapped = wrapped
self.message = message
def __call__(self):
- raise AssertionError(self.message)
+ raise DatabaseOperationForbidden(self.message)
class SimpleTestCase(unittest.TestCase):
diff --git a/tests/test_utils/test_testcase.py b/tests/test_utils/test_testcase.py
index 1261006092..eefca4b32d 100644
--- a/tests/test_utils/test_testcase.py
+++ b/tests/test_utils/test_testcase.py
@@ -2,7 +2,7 @@ from functools import wraps
from django.db import IntegrityError, connections, transaction
from django.test import TestCase, skipUnlessDBFeature
-from django.test.testcases import TestData
+from django.test.testcases import DatabaseOperationForbidden, TestData
from .models import Car, Person, PossessedCar
@@ -28,9 +28,9 @@ class TestTestCase(TestCase):
"Add 'other' to test_utils.test_testcase.TestTestCase.databases to "
"ensure proper test isolation and silence this failure."
)
- with self.assertRaisesMessage(AssertionError, message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, message):
connections['other'].connect()
- with self.assertRaisesMessage(AssertionError, message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, message):
connections['other'].temporary_connection()
def test_disallowed_database_queries(self):
@@ -39,7 +39,7 @@ class TestTestCase(TestCase):
"Add 'other' to test_utils.test_testcase.TestTestCase.databases to "
"ensure proper test isolation and silence this failure."
)
- with self.assertRaisesMessage(AssertionError, message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, message):
Car.objects.using('other').get()
def test_reset_sequences(self):
diff --git a/tests/test_utils/test_transactiontestcase.py b/tests/test_utils/test_transactiontestcase.py
index 4e183a5196..f1f53e4da5 100644
--- a/tests/test_utils/test_transactiontestcase.py
+++ b/tests/test_utils/test_transactiontestcase.py
@@ -2,6 +2,7 @@ from unittest import mock
from django.db import connections
from django.test import TestCase, TransactionTestCase, override_settings
+from django.test.testcases import DatabaseOperationForbidden
from .models import Car
@@ -58,5 +59,5 @@ class DisallowedDatabaseQueriesTests(TransactionTestCase):
"DisallowedDatabaseQueriesTests.databases to ensure proper test "
"isolation and silence this failure."
)
- with self.assertRaisesMessage(AssertionError, message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, message):
Car.objects.using('other').get()
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 9c003e5a6f..2dbd1fc216 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -21,6 +21,7 @@ from django.test import (
skipUnlessDBFeature,
)
from django.test.html import HTMLParseError, parse_html
+from django.test.testcases import DatabaseOperationForbidden
from django.test.utils import (
CaptureQueriesContext, TestContextDecorator, isolate_apps,
override_settings, setup_test_environment,
@@ -1508,9 +1509,9 @@ class DisallowedDatabaseQueriesTests(SimpleTestCase):
"test_utils.tests.DisallowedDatabaseQueriesTests.databases to "
"silence this failure."
)
- with self.assertRaisesMessage(AssertionError, expected_message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, expected_message):
connection.connect()
- with self.assertRaisesMessage(AssertionError, expected_message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, expected_message):
connection.temporary_connection()
def test_disallowed_database_queries(self):
@@ -1521,7 +1522,7 @@ class DisallowedDatabaseQueriesTests(SimpleTestCase):
"test_utils.tests.DisallowedDatabaseQueriesTests.databases to "
"silence this failure."
)
- with self.assertRaisesMessage(AssertionError, expected_message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, expected_message):
Car.objects.first()
def test_disallowed_database_chunked_cursor_queries(self):
@@ -1532,7 +1533,7 @@ class DisallowedDatabaseQueriesTests(SimpleTestCase):
"test_utils.tests.DisallowedDatabaseQueriesTests.databases to "
"silence this failure."
)
- with self.assertRaisesMessage(AssertionError, expected_message):
+ with self.assertRaisesMessage(DatabaseOperationForbidden, expected_message):
next(Car.objects.iterator())