summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/admin_docs/test_utils.py4
-rw-r--r--tests/admin_docs/tests.py10
-rw-r--r--tests/auth_tests/test_mixins.py4
-rw-r--r--tests/auth_tests/test_models.py2
-rw-r--r--tests/auth_tests/test_validators.py12
-rw-r--r--tests/backends/base/test_features.py4
-rw-r--r--tests/cache/tests.py2
-rw-r--r--tests/check_framework/test_multi_db.py5
-rw-r--r--tests/custom_lookups/tests.py6
-rw-r--r--tests/expressions/tests.py2
-rw-r--r--tests/invalid_models_tests/test_ordinary_fields.py12
-rw-r--r--tests/managers_regress/tests.py4
-rw-r--r--tests/migrations/test_executor.py4
-rw-r--r--tests/model_fields/tests.py2
-rw-r--r--tests/model_forms/tests.py2
-rw-r--r--tests/model_inheritance/test_abstract_inheritance.py4
-rw-r--r--tests/model_regress/test_pickle.py4
-rw-r--r--tests/multiple_database/tests.py2
-rw-r--r--tests/order_with_respect_to/tests.py4
-rw-r--r--tests/postgres_tests/__init__.py9
-rw-r--r--tests/postgres_tests/test_array.py14
-rw-r--r--tests/postgres_tests/test_hstore.py23
-rw-r--r--tests/postgres_tests/test_indexes.py14
-rw-r--r--tests/postgres_tests/test_json.py10
-rw-r--r--tests/postgres_tests/test_ranges.py10
-rw-r--r--tests/project_template/test_settings.py4
-rw-r--r--tests/queries/test_query.py4
-rw-r--r--tests/queries/tests.py39
-rw-r--r--tests/signals/tests.py8
-rw-r--r--tests/test_runner/test_discover_runner.py4
-rw-r--r--tests/timezones/tests.py2
-rw-r--r--tests/utils_tests/test_feedgenerator.py9
-rw-r--r--tests/utils_tests/test_module_loading.py4
-rw-r--r--tests/validation/__init__.py3
-rw-r--r--tests/validation/test_custom_messages.py6
-rw-r--r--tests/validation/test_validators.py6
-rw-r--r--tests/validation/tests.py6
37 files changed, 130 insertions, 134 deletions
diff --git a/tests/admin_docs/test_utils.py b/tests/admin_docs/test_utils.py
index 0c738e5e89..17ea912015 100644
--- a/tests/admin_docs/test_utils.py
+++ b/tests/admin_docs/test_utils.py
@@ -4,11 +4,11 @@ from django.contrib.admindocs.utils import (
docutils_is_available, parse_docstring, parse_rst, trim_docstring,
)
-from .tests import AdminDocsTestCase
+from .tests import AdminDocsSimpleTestCase
@unittest.skipUnless(docutils_is_available, "no docutils installed.")
-class TestUtils(AdminDocsTestCase):
+class TestUtils(AdminDocsSimpleTestCase):
"""
This __doc__ output is required for testing. I copied this example from
`admindocs` documentation. (TITLE)
diff --git a/tests/admin_docs/tests.py b/tests/admin_docs/tests.py
index dfe6104a33..d53cb80c94 100644
--- a/tests/admin_docs/tests.py
+++ b/tests/admin_docs/tests.py
@@ -1,5 +1,7 @@
from django.contrib.auth.models import User
-from django.test import TestCase, modify_settings, override_settings
+from django.test import (
+ SimpleTestCase, TestCase, modify_settings, override_settings,
+)
class TestDataMixin:
@@ -11,5 +13,11 @@ class TestDataMixin:
@override_settings(ROOT_URLCONF='admin_docs.urls')
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.admindocs'})
+class AdminDocsSimpleTestCase(SimpleTestCase):
+ pass
+
+
+@override_settings(ROOT_URLCONF='admin_docs.urls')
+@modify_settings(INSTALLED_APPS={'append': 'django.contrib.admindocs'})
class AdminDocsTestCase(TestCase):
pass
diff --git a/tests/auth_tests/test_mixins.py b/tests/auth_tests/test_mixins.py
index 04cedcd9cf..5f0379bcd0 100644
--- a/tests/auth_tests/test_mixins.py
+++ b/tests/auth_tests/test_mixins.py
@@ -7,7 +7,7 @@ from django.contrib.auth.mixins import (
from django.contrib.auth.models import AnonymousUser
from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
-from django.test import RequestFactory, TestCase
+from django.test import RequestFactory, SimpleTestCase, TestCase
from django.views.generic import View
@@ -111,7 +111,7 @@ class AccessMixinTests(TestCase):
view(request)
-class UserPassesTestTests(TestCase):
+class UserPassesTestTests(SimpleTestCase):
factory = RequestFactory()
diff --git a/tests/auth_tests/test_models.py b/tests/auth_tests/test_models.py
index 7bee3d7d31..8387c5f9ee 100644
--- a/tests/auth_tests/test_models.py
+++ b/tests/auth_tests/test_models.py
@@ -156,7 +156,7 @@ class UserManagerTestCase(TestCase):
self.assertIn(char, allowed_chars)
-class AbstractBaseUserTests(TestCase):
+class AbstractBaseUserTests(SimpleTestCase):
def test_has_usable_password(self):
"""
diff --git a/tests/auth_tests/test_validators.py b/tests/auth_tests/test_validators.py
index b29f64766b..1c2c6b4aff 100644
--- a/tests/auth_tests/test_validators.py
+++ b/tests/auth_tests/test_validators.py
@@ -11,7 +11,7 @@ from django.contrib.auth.password_validation import (
)
from django.core.exceptions import ValidationError
from django.db import models
-from django.test import TestCase, override_settings
+from django.test import SimpleTestCase, TestCase, override_settings
from django.test.utils import isolate_apps
from django.utils.html import conditional_escape
@@ -22,7 +22,7 @@ from django.utils.html import conditional_escape
'min_length': 12,
}},
])
-class PasswordValidationTest(TestCase):
+class PasswordValidationTest(SimpleTestCase):
def test_get_default_password_validators(self):
validators = get_default_password_validators()
self.assertEqual(len(validators), 2)
@@ -95,7 +95,7 @@ class PasswordValidationTest(TestCase):
self.assertEqual(password_validators_help_text_html(), '')
-class MinimumLengthValidatorTest(TestCase):
+class MinimumLengthValidatorTest(SimpleTestCase):
def test_validate(self):
expected_error = "This password is too short. It must contain at least %d characters."
self.assertIsNone(MinimumLengthValidator().validate('12345678'))
@@ -182,7 +182,7 @@ class UserAttributeSimilarityValidatorTest(TestCase):
)
-class CommonPasswordValidatorTest(TestCase):
+class CommonPasswordValidatorTest(SimpleTestCase):
def test_validate(self):
expected_error = "This password is too common."
self.assertIsNone(CommonPasswordValidator().validate('a-safe-password'))
@@ -214,7 +214,7 @@ class CommonPasswordValidatorTest(TestCase):
)
-class NumericPasswordValidatorTest(TestCase):
+class NumericPasswordValidatorTest(SimpleTestCase):
def test_validate(self):
expected_error = "This password is entirely numeric."
self.assertIsNone(NumericPasswordValidator().validate('a-safe-password'))
@@ -231,7 +231,7 @@ class NumericPasswordValidatorTest(TestCase):
)
-class UsernameValidatorsTests(TestCase):
+class UsernameValidatorsTests(SimpleTestCase):
def test_unicode_validator(self):
valid_usernames = ['joe', 'René', 'ᴮᴵᴳᴮᴵᴿᴰ', 'أحمد']
invalid_usernames = [
diff --git a/tests/backends/base/test_features.py b/tests/backends/base/test_features.py
index 831a0002a3..9b67cfec47 100644
--- a/tests/backends/base/test_features.py
+++ b/tests/backends/base/test_features.py
@@ -1,8 +1,8 @@
from django.db import connection
-from django.test import TestCase
+from django.test import SimpleTestCase
-class TestDatabaseFeatures(TestCase):
+class TestDatabaseFeatures(SimpleTestCase):
def test_nonexistent_feature(self):
self.assertFalse(hasattr(connection.features, 'nonexistent'))
diff --git a/tests/cache/tests.py b/tests/cache/tests.py
index 6578eb288f..ad0ef05765 100644
--- a/tests/cache/tests.py
+++ b/tests/cache/tests.py
@@ -1785,7 +1785,7 @@ class CacheHEADTest(SimpleTestCase):
('es', 'Spanish'),
],
)
-class CacheI18nTest(TestCase):
+class CacheI18nTest(SimpleTestCase):
def setUp(self):
self.path = '/cache/test/'
diff --git a/tests/check_framework/test_multi_db.py b/tests/check_framework/test_multi_db.py
index 3080b52fda..f51d28a215 100644
--- a/tests/check_framework/test_multi_db.py
+++ b/tests/check_framework/test_multi_db.py
@@ -1,7 +1,7 @@
from unittest import mock
from django.db import connections, models
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.test.utils import isolate_apps, override_settings
@@ -15,8 +15,7 @@ class TestRouter:
@override_settings(DATABASE_ROUTERS=[TestRouter()])
@isolate_apps('check_framework')
-class TestMultiDBChecks(TestCase):
- multi_db = True
+class TestMultiDBChecks(SimpleTestCase):
def _patch_check_field_on(self, db):
return mock.patch.object(connections[db].validation, 'check_field')
diff --git a/tests/custom_lookups/tests.py b/tests/custom_lookups/tests.py
index 8c82b710c6..981a45b74a 100644
--- a/tests/custom_lookups/tests.py
+++ b/tests/custom_lookups/tests.py
@@ -4,7 +4,7 @@ from datetime import date, datetime
from django.core.exceptions import FieldError
from django.db import connection, models
-from django.test import TestCase, override_settings
+from django.test import SimpleTestCase, TestCase, override_settings
from django.test.utils import register_lookup
from django.utils import timezone
@@ -513,7 +513,7 @@ class TrackCallsYearTransform(YearTransform):
return super().get_transform(lookup_name)
-class LookupTransformCallOrderTests(TestCase):
+class LookupTransformCallOrderTests(SimpleTestCase):
def test_call_order(self):
with register_lookup(models.DateField, TrackCallsYearTransform):
# junk lookup - tries lookup, then transform, then fails
@@ -540,7 +540,7 @@ class LookupTransformCallOrderTests(TestCase):
['lookup'])
-class CustomisedMethodsTests(TestCase):
+class CustomisedMethodsTests(SimpleTestCase):
def test_overridden_get_lookup(self):
q = CustomModel.objects.filter(field__lookupfunc_monkeys=3)
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index d3f86fcd92..02d621a90c 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -1437,7 +1437,7 @@ class FieldTransformTests(TestCase):
)
-class ReprTests(TestCase):
+class ReprTests(SimpleTestCase):
def test_expressions(self):
self.assertEqual(
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py
index e1c04c2d36..3922c835b9 100644
--- a/tests/invalid_models_tests/test_ordinary_fields.py
+++ b/tests/invalid_models_tests/test_ordinary_fields.py
@@ -2,7 +2,7 @@ import unittest
from django.core.checks import Error, Warning as DjangoWarning
from django.db import connection, models
-from django.test import SimpleTestCase, TestCase, skipIfDBFeature
+from django.test import SimpleTestCase, skipIfDBFeature
from django.test.utils import isolate_apps, override_settings
from django.utils.functional import lazy
from django.utils.timezone import now
@@ -40,7 +40,7 @@ class AutoFieldTests(SimpleTestCase):
@isolate_apps('invalid_models_tests')
-class CharFieldTests(TestCase):
+class CharFieldTests(SimpleTestCase):
def test_valid_field(self):
class Model(models.Model):
@@ -312,7 +312,7 @@ class CharFieldTests(TestCase):
@isolate_apps('invalid_models_tests')
-class DateFieldTests(TestCase):
+class DateFieldTests(SimpleTestCase):
maxDiff = None
def test_auto_now_and_auto_now_add_raise_error(self):
@@ -375,7 +375,7 @@ class DateFieldTests(TestCase):
@isolate_apps('invalid_models_tests')
-class DateTimeFieldTests(TestCase):
+class DateTimeFieldTests(SimpleTestCase):
maxDiff = None
def test_fix_default_value(self):
@@ -638,7 +638,7 @@ class IntegerFieldTests(SimpleTestCase):
@isolate_apps('invalid_models_tests')
-class TimeFieldTests(TestCase):
+class TimeFieldTests(SimpleTestCase):
maxDiff = None
def test_fix_default_value(self):
@@ -680,7 +680,7 @@ class TimeFieldTests(TestCase):
@isolate_apps('invalid_models_tests')
-class TextFieldTests(TestCase):
+class TextFieldTests(SimpleTestCase):
@skipIfDBFeature('supports_index_on_text_field')
def test_max_length_warning(self):
diff --git a/tests/managers_regress/tests.py b/tests/managers_regress/tests.py
index dd33fdf96f..3c2ba5e1f1 100644
--- a/tests/managers_regress/tests.py
+++ b/tests/managers_regress/tests.py
@@ -1,6 +1,6 @@
from django.db import models
from django.template import Context, Template
-from django.test import TestCase, override_settings
+from django.test import SimpleTestCase, TestCase, override_settings
from django.test.utils import isolate_apps
from .models import (
@@ -160,7 +160,7 @@ class ManagersRegressionTests(TestCase):
@isolate_apps('managers_regress')
-class TestManagerInheritance(TestCase):
+class TestManagerInheritance(SimpleTestCase):
def test_implicit_inheritance(self):
class CustomManager(models.Manager):
pass
diff --git a/tests/migrations/test_executor.py b/tests/migrations/test_executor.py
index c85a16de88..8bb4f83c5f 100644
--- a/tests/migrations/test_executor.py
+++ b/tests/migrations/test_executor.py
@@ -8,7 +8,7 @@ from django.db.migrations.graph import MigrationGraph
from django.db.migrations.recorder import MigrationRecorder
from django.db.utils import DatabaseError
from django.test import (
- TestCase, modify_settings, override_settings, skipUnlessDBFeature,
+ SimpleTestCase, modify_settings, override_settings, skipUnlessDBFeature,
)
from .test_base import MigrationTestBase
@@ -685,7 +685,7 @@ class FakeMigration:
return 'M<%s>' % self.name
-class ExecutorUnitTests(TestCase):
+class ExecutorUnitTests(SimpleTestCase):
"""(More) isolated unit tests for executor methods."""
def test_minimize_rollbacks(self):
"""
diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py
index d638acb488..42e784db54 100644
--- a/tests/model_fields/tests.py
+++ b/tests/model_fields/tests.py
@@ -15,7 +15,7 @@ class Nested:
pass
-class BasicFieldTests(TestCase):
+class BasicFieldTests(SimpleTestCase):
def test_show_hidden_initial(self):
"""
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index 556a41ed83..194e97a08b 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -2849,7 +2849,7 @@ class CustomMetaclassTestCase(SimpleTestCase):
self.assertEqual(new_cls.base_fields, {})
-class StrictAssignmentTests(TestCase):
+class StrictAssignmentTests(SimpleTestCase):
"""
Should a model do anything special with __setattr__() or descriptors which
raise a ValidationError, a model form should catch the error (#24706).
diff --git a/tests/model_inheritance/test_abstract_inheritance.py b/tests/model_inheritance/test_abstract_inheritance.py
index f03bc3fa7e..dfcd47c111 100644
--- a/tests/model_inheritance/test_abstract_inheritance.py
+++ b/tests/model_inheritance/test_abstract_inheritance.py
@@ -5,12 +5,12 @@ from django.contrib.contenttypes.models import ContentType
from django.core.checks import Error
from django.core.exceptions import FieldDoesNotExist, FieldError
from django.db import models
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.test.utils import isolate_apps
@isolate_apps('model_inheritance')
-class AbstractInheritanceTests(TestCase):
+class AbstractInheritanceTests(SimpleTestCase):
def test_single_parent(self):
class AbstractBase(models.Model):
name = models.CharField(max_length=30)
diff --git a/tests/model_regress/test_pickle.py b/tests/model_regress/test_pickle.py
index 5fbe0a3cbb..f8676404c0 100644
--- a/tests/model_regress/test_pickle.py
+++ b/tests/model_regress/test_pickle.py
@@ -1,11 +1,11 @@
import pickle
from django.db import DJANGO_VERSION_PICKLE_KEY, models
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.utils.version import get_version
-class ModelPickleTestCase(TestCase):
+class ModelPickleTests(SimpleTestCase):
def test_missing_django_version_unpickling(self):
"""
#21430 -- Verifies a warning is raised for models that are
diff --git a/tests/multiple_database/tests.py b/tests/multiple_database/tests.py
index e4cef8cdb9..b447be575c 100644
--- a/tests/multiple_database/tests.py
+++ b/tests/multiple_database/tests.py
@@ -2091,7 +2091,7 @@ class NoRelationRouter:
@override_settings(DATABASE_ROUTERS=[NoRelationRouter()])
-class RelationAssignmentTests(TestCase):
+class RelationAssignmentTests(SimpleTestCase):
"""allow_relation() is called with unsaved model instances."""
multi_db = True
router_prevents_msg = 'the current database router prevents this relation'
diff --git a/tests/order_with_respect_to/tests.py b/tests/order_with_respect_to/tests.py
index a047516caa..c433269a3b 100644
--- a/tests/order_with_respect_to/tests.py
+++ b/tests/order_with_respect_to/tests.py
@@ -1,7 +1,7 @@
from operator import attrgetter
from django.db import models
-from django.test import TestCase
+from django.test import SimpleTestCase, TestCase
from django.test.utils import isolate_apps
from .base_tests import BaseOrderWithRespectToTests
@@ -14,7 +14,7 @@ class OrderWithRespectToBaseTests(BaseOrderWithRespectToTests, TestCase):
Question = Question
-class OrderWithRespectToTests(TestCase):
+class OrderWithRespectToTests(SimpleTestCase):
@isolate_apps('order_with_respect_to')
def test_duplicate_order_field(self):
diff --git a/tests/postgres_tests/__init__.py b/tests/postgres_tests/__init__.py
index d2e5d3bea4..2b84fc25db 100644
--- a/tests/postgres_tests/__init__.py
+++ b/tests/postgres_tests/__init__.py
@@ -3,7 +3,12 @@ import unittest
from forms_tests.widget_tests.base import WidgetTest
from django.db import connection
-from django.test import TestCase, modify_settings
+from django.test import SimpleTestCase, TestCase, modify_settings
+
+
+@unittest.skipUnless(connection.vendor == 'postgresql', "PostgreSQL specific tests")
+class PostgreSQLSimpleTestCase(SimpleTestCase):
+ pass
@unittest.skipUnless(connection.vendor == 'postgresql', "PostgreSQL specific tests")
@@ -14,5 +19,5 @@ class PostgreSQLTestCase(TestCase):
@unittest.skipUnless(connection.vendor == 'postgresql', "PostgreSQL specific tests")
# To locate the widget's template.
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.postgres'})
-class PostgreSQLWidgetTestCase(WidgetTest, PostgreSQLTestCase):
+class PostgreSQLWidgetTestCase(WidgetTest, PostgreSQLSimpleTestCase):
pass
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index 25fbc230bb..9c678bb588 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -12,7 +12,9 @@ from django.test import TransactionTestCase, modify_settings, override_settings
from django.test.utils import isolate_apps
from django.utils import timezone
-from . import PostgreSQLTestCase, PostgreSQLWidgetTestCase
+from . import (
+ PostgreSQLSimpleTestCase, PostgreSQLTestCase, PostgreSQLWidgetTestCase,
+)
from .models import (
ArrayFieldSubclass, CharArrayModel, DateTimeArrayModel, IntegerArrayModel,
NestedIntegerArrayModel, NullableIntegerArrayModel, OtherTypesArrayModel,
@@ -440,7 +442,7 @@ class TestOtherTypesExactQuerying(PostgreSQLTestCase):
@isolate_apps('postgres_tests')
-class TestChecks(PostgreSQLTestCase):
+class TestChecks(PostgreSQLSimpleTestCase):
def test_field_checks(self):
class MyModel(PostgreSQLModel):
@@ -589,7 +591,7 @@ class TestMigrations(TransactionTestCase):
self.assertNotIn(table_name, connection.introspection.table_names(cursor))
-class TestSerialization(PostgreSQLTestCase):
+class TestSerialization(PostgreSQLSimpleTestCase):
test_data = (
'[{"fields": {"field": "[\\"1\\", \\"2\\", null]"}, "model": "postgres_tests.integerarraymodel", "pk": null}]'
)
@@ -604,7 +606,7 @@ class TestSerialization(PostgreSQLTestCase):
self.assertEqual(instance.field, [1, 2, None])
-class TestValidation(PostgreSQLTestCase):
+class TestValidation(PostgreSQLSimpleTestCase):
def test_unbounded(self):
field = ArrayField(models.IntegerField())
@@ -664,7 +666,7 @@ class TestValidation(PostgreSQLTestCase):
self.assertEqual(exception.params, {'nth': 1, 'value': 0, 'limit_value': 1, 'show_value': 0})
-class TestSimpleFormField(PostgreSQLTestCase):
+class TestSimpleFormField(PostgreSQLSimpleTestCase):
def test_valid(self):
field = SimpleArrayField(forms.CharField())
@@ -782,7 +784,7 @@ class TestSimpleFormField(PostgreSQLTestCase):
self.assertIs(field.has_changed([], ''), False)
-class TestSplitFormField(PostgreSQLTestCase):
+class TestSplitFormField(PostgreSQLSimpleTestCase):
def test_valid(self):
class SplitForm(forms.Form):
diff --git a/tests/postgres_tests/test_hstore.py b/tests/postgres_tests/test_hstore.py
index a51cb4e66f..0a2d77e4a4 100644
--- a/tests/postgres_tests/test_hstore.py
+++ b/tests/postgres_tests/test_hstore.py
@@ -2,9 +2,9 @@ import json
from django.core import checks, exceptions, serializers
from django.forms import Form
-from django.test.utils import isolate_apps, modify_settings
+from django.test.utils import isolate_apps
-from . import PostgreSQLTestCase
+from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
from .models import HStoreModel, PostgreSQLModel
try:
@@ -15,12 +15,7 @@ except ImportError:
pass
-@modify_settings(INSTALLED_APPS={'append': 'django.contrib.postgres'})
-class HStoreTestCase(PostgreSQLTestCase):
- pass
-
-
-class SimpleTests(HStoreTestCase):
+class SimpleTests(PostgreSQLTestCase):
def test_save_load_success(self):
value = {'a': 'b'}
instance = HStoreModel(field=value)
@@ -69,7 +64,7 @@ class SimpleTests(HStoreTestCase):
self.assertEqual(instance.array_field, expected_value)
-class TestQuerying(HStoreTestCase):
+class TestQuerying(PostgreSQLTestCase):
def setUp(self):
self.objs = [
@@ -191,7 +186,7 @@ class TestQuerying(HStoreTestCase):
@isolate_apps('postgres_tests')
-class TestChecks(PostgreSQLTestCase):
+class TestChecks(PostgreSQLSimpleTestCase):
def test_invalid_default(self):
class MyModel(PostgreSQLModel):
@@ -218,7 +213,7 @@ class TestChecks(PostgreSQLTestCase):
self.assertEqual(MyModel().check(), [])
-class TestSerialization(HStoreTestCase):
+class TestSerialization(PostgreSQLSimpleTestCase):
test_data = json.dumps([{
'model': 'postgres_tests.hstoremodel',
'pk': None,
@@ -248,7 +243,7 @@ class TestSerialization(HStoreTestCase):
self.assertEqual(instance.field, new_instance.field)
-class TestValidation(HStoreTestCase):
+class TestValidation(PostgreSQLSimpleTestCase):
def test_not_a_string(self):
field = HStoreField()
@@ -262,7 +257,7 @@ class TestValidation(HStoreTestCase):
self.assertEqual(field.clean({'a': None}, None), {'a': None})
-class TestFormField(HStoreTestCase):
+class TestFormField(PostgreSQLSimpleTestCase):
def test_valid(self):
field = forms.HStoreField()
@@ -325,7 +320,7 @@ class TestFormField(HStoreTestCase):
self.assertTrue(form_w_hstore.has_changed())
-class TestValidator(HStoreTestCase):
+class TestValidator(PostgreSQLSimpleTestCase):
def test_simple_valid(self):
validator = KeysValidator(keys=['a', 'b'])
diff --git a/tests/postgres_tests/test_indexes.py b/tests/postgres_tests/test_indexes.py
index d692b6662a..0b0b0f5a37 100644
--- a/tests/postgres_tests/test_indexes.py
+++ b/tests/postgres_tests/test_indexes.py
@@ -11,7 +11,7 @@ from django.db.utils import NotSupportedError
from django.test import skipUnlessDBFeature
from django.test.utils import register_lookup
-from . import PostgreSQLTestCase
+from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
from .models import CharFieldModel, IntegerArrayModel
@@ -31,7 +31,7 @@ class IndexTestMixin:
@skipUnlessDBFeature('has_brin_index_support')
-class BrinIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class BrinIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = BrinIndex
def test_suffix(self):
@@ -54,7 +54,7 @@ class BrinIndexTests(IndexTestMixin, PostgreSQLTestCase):
BrinIndex(fields=['title'], name='test_title_brin', pages_per_range=0)
-class BTreeIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class BTreeIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = BTreeIndex
def test_suffix(self):
@@ -68,7 +68,7 @@ class BTreeIndexTests(IndexTestMixin, PostgreSQLTestCase):
self.assertEqual(kwargs, {'fields': ['title'], 'name': 'test_title_btree', 'fillfactor': 80})
-class GinIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class GinIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = GinIndex
def test_suffix(self):
@@ -92,7 +92,7 @@ class GinIndexTests(IndexTestMixin, PostgreSQLTestCase):
})
-class GistIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class GistIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = GistIndex
def test_suffix(self):
@@ -111,7 +111,7 @@ class GistIndexTests(IndexTestMixin, PostgreSQLTestCase):
})
-class HashIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class HashIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = HashIndex
def test_suffix(self):
@@ -125,7 +125,7 @@ class HashIndexTests(IndexTestMixin, PostgreSQLTestCase):
self.assertEqual(kwargs, {'fields': ['title'], 'name': 'test_title_hash', 'fillfactor': 80})
-class SpGistIndexTests(IndexTestMixin, PostgreSQLTestCase):
+class SpGistIndexTests(IndexTestMixin, PostgreSQLSimpleTestCase):
index_class = SpGistIndex
def test_suffix(self):
diff --git a/tests/postgres_tests/test_json.py b/tests/postgres_tests/test_json.py
index 2f0b55a292..6622820ec9 100644
--- a/tests/postgres_tests/test_json.py
+++ b/tests/postgres_tests/test_json.py
@@ -9,7 +9,7 @@ from django.forms import CharField, Form, widgets
from django.test.utils import isolate_apps
from django.utils.html import escape
-from . import PostgreSQLTestCase
+from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
from .models import JSONModel, PostgreSQLModel
try:
@@ -301,7 +301,7 @@ class TestQuerying(PostgreSQLTestCase):
@isolate_apps('postgres_tests')
-class TestChecks(PostgreSQLTestCase):
+class TestChecks(PostgreSQLSimpleTestCase):
def test_invalid_default(self):
class MyModel(PostgreSQLModel):
@@ -336,7 +336,7 @@ class TestChecks(PostgreSQLTestCase):
self.assertEqual(model.check(), [])
-class TestSerialization(PostgreSQLTestCase):
+class TestSerialization(PostgreSQLSimpleTestCase):
test_data = (
'[{"fields": {"field": %s, "field_custom": null}, '
'"model": "postgres_tests.jsonmodel", "pk": null}]'
@@ -362,7 +362,7 @@ class TestSerialization(PostgreSQLTestCase):
self.assertEqual(instance.field, value)
-class TestValidation(PostgreSQLTestCase):
+class TestValidation(PostgreSQLSimpleTestCase):
def test_not_serializable(self):
field = JSONField()
@@ -378,7 +378,7 @@ class TestValidation(PostgreSQLTestCase):
self.assertEqual(field.clean(datetime.timedelta(days=1), None), datetime.timedelta(days=1))
-class TestFormField(PostgreSQLTestCase):
+class TestFormField(PostgreSQLSimpleTestCase):
def test_valid(self):
field = forms.JSONField()
diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py
index c05ac19699..f4e7e9bd6d 100644
--- a/tests/postgres_tests/test_ranges.py
+++ b/tests/postgres_tests/test_ranges.py
@@ -9,7 +9,7 @@ from django.test import ignore_warnings, override_settings
from django.utils import timezone
from django.utils.deprecation import RemovedInDjango31Warning
-from . import PostgreSQLTestCase
+from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
from .models import RangeLookupsModel, RangesModel
try:
@@ -355,7 +355,7 @@ class TestQueryingWithRanges(PostgreSQLTestCase):
)
-class TestSerialization(PostgreSQLTestCase):
+class TestSerialization(PostgreSQLSimpleTestCase):
test_data = (
'[{"fields": {"ints": "{\\"upper\\": \\"10\\", \\"lower\\": \\"0\\", '
'\\"bounds\\": \\"[)\\"}", "decimals": "{\\"empty\\": true}", '
@@ -405,7 +405,7 @@ class TestSerialization(PostgreSQLTestCase):
self.assertEqual(new_instance.ints, NumericRange(10, None))
-class TestValidators(PostgreSQLTestCase):
+class TestValidators(PostgreSQLSimpleTestCase):
def test_max(self):
validator = RangeMaxValueValidator(5)
@@ -430,7 +430,7 @@ class TestValidators(PostgreSQLTestCase):
validator(NumericRange(None, 10)) # an unbound range
-class TestFormField(PostgreSQLTestCase):
+class TestFormField(PostgreSQLSimpleTestCase):
def test_valid_integer(self):
field = pg_forms.IntegerRangeField()
@@ -708,7 +708,7 @@ class TestFormField(PostgreSQLTestCase):
self.assertIsInstance(form_field, pg_forms.DateTimeRangeField)
-class TestWidget(PostgreSQLTestCase):
+class TestWidget(PostgreSQLSimpleTestCase):
def test_range_widget(self):
f = pg_forms.ranges.DateTimeRangeField()
self.assertHTMLEqual(
diff --git a/tests/project_template/test_settings.py b/tests/project_template/test_settings.py
index 1ee3360cb6..0eaf950951 100644
--- a/tests/project_template/test_settings.py
+++ b/tests/project_template/test_settings.py
@@ -3,11 +3,11 @@ import shutil
import tempfile
from django import conf
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.test.utils import extend_sys_path
-class TestStartProjectSettings(TestCase):
+class TestStartProjectSettings(SimpleTestCase):
def setUp(self):
self.temp_dir = tempfile.TemporaryDirectory()
self.addCleanup(self.temp_dir.cleanup)
diff --git a/tests/queries/test_query.py b/tests/queries/test_query.py
index f8f43d9577..bef79c992e 100644
--- a/tests/queries/test_query.py
+++ b/tests/queries/test_query.py
@@ -8,13 +8,13 @@ from django.db.models.functions import Lower
from django.db.models.lookups import Exact, GreaterThan, IsNull, LessThan
from django.db.models.sql.query import Query
from django.db.models.sql.where import OR
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.test.utils import register_lookup
from .models import Author, Item, ObjectC, Ranking
-class TestQuery(TestCase):
+class TestQuery(SimpleTestCase):
def test_simple_query(self):
query = Query(Author)
where = query.build_where(Q(num__gt=2))
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index a30403a153..c655fe52cb 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -9,7 +9,7 @@ from django.db import DEFAULT_DB_ALIAS, connection
from django.db.models import Count, F, Q
from django.db.models.sql.constants import LOUTER
from django.db.models.sql.where import NothingNode, WhereNode
-from django.test import TestCase, skipUnlessDBFeature
+from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature
from django.test.utils import CaptureQueriesContext
from .models import (
@@ -1959,14 +1959,11 @@ class RawQueriesTests(TestCase):
self.assertEqual(repr(qs), "<RawQuerySet: SELECT * FROM queries_note WHERE note = n1 and misc = foo>")
-class GeneratorExpressionTests(TestCase):
+class GeneratorExpressionTests(SimpleTestCase):
def test_ticket10432(self):
# Using an empty generator expression as the rvalue for an "__in"
# lookup is legal.
- self.assertQuerysetEqual(
- Note.objects.filter(pk__in=(x for x in ())),
- []
- )
+ self.assertCountEqual(Note.objects.filter(pk__in=(x for x in ())), [])
class ComparisonTests(TestCase):
@@ -2222,30 +2219,22 @@ class CloneTests(TestCase):
opts_class.__deepcopy__ = note_deepcopy
-class EmptyQuerySetTests(TestCase):
+class EmptyQuerySetTests(SimpleTestCase):
def test_emptyqueryset_values(self):
# #14366 -- Calling .values() on an empty QuerySet and then cloning
# that should not cause an error
- self.assertQuerysetEqual(
- Number.objects.none().values('num').order_by('num'), []
- )
+ self.assertCountEqual(Number.objects.none().values('num').order_by('num'), [])
def test_values_subquery(self):
- self.assertQuerysetEqual(
- Number.objects.filter(pk__in=Number.objects.none().values("pk")),
- []
- )
- self.assertQuerysetEqual(
- Number.objects.filter(pk__in=Number.objects.none().values_list("pk")),
- []
- )
+ self.assertCountEqual(Number.objects.filter(pk__in=Number.objects.none().values('pk')), [])
+ self.assertCountEqual(Number.objects.filter(pk__in=Number.objects.none().values_list('pk')), [])
def test_ticket_19151(self):
# #19151 -- Calling .values() or .values_list() on an empty QuerySet
# should return an empty QuerySet and not cause an error.
q = Author.objects.none()
- self.assertQuerysetEqual(q.values(), [])
- self.assertQuerysetEqual(q.values_list(), [])
+ self.assertCountEqual(q.values(), [])
+ self.assertCountEqual(q.values_list(), [])
class ValuesQuerysetTests(TestCase):
@@ -3013,7 +3002,7 @@ class ProxyQueryCleanupTest(TestCase):
self.assertEqual(qs.count(), 1)
-class WhereNodeTest(TestCase):
+class WhereNodeTest(SimpleTestCase):
class DummyNode:
def as_sql(self, compiler, connection):
return 'dummy', []
@@ -3078,7 +3067,7 @@ class WhereNodeTest(TestCase):
w.as_sql(compiler, connection)
-class QuerySetExceptionTests(TestCase):
+class QuerySetExceptionTests(SimpleTestCase):
def test_iter_exceptions(self):
qs = ExtraInfo.objects.only('author')
msg = "'ManyToOneRel' object has no attribute 'attname'"
@@ -3531,7 +3520,7 @@ class Ticket20101Tests(TestCase):
self.assertIn(n, (qs1 | qs2))
-class EmptyStringPromotionTests(TestCase):
+class EmptyStringPromotionTests(SimpleTestCase):
def test_empty_string_promotion(self):
qs = RelatedObject.objects.filter(single__name='')
if connection.features.interprets_empty_strings_as_nulls:
@@ -3570,7 +3559,7 @@ class DoubleInSubqueryTests(TestCase):
self.assertSequenceEqual(qs, [lfb1])
-class Ticket18785Tests(TestCase):
+class Ticket18785Tests(SimpleTestCase):
def test_ticket_18785(self):
# Test join trimming from ticket18785
qs = Item.objects.exclude(
@@ -3858,7 +3847,7 @@ class TestTicket24279(TestCase):
self.assertQuerysetEqual(qs, [])
-class TestInvalidValuesRelation(TestCase):
+class TestInvalidValuesRelation(SimpleTestCase):
def test_invalid_values(self):
msg = "invalid literal for int() with base 10: 'abc'"
with self.assertRaisesMessage(ValueError, msg):
diff --git a/tests/signals/tests.py b/tests/signals/tests.py
index 563f3431cc..e0a24ccc6e 100644
--- a/tests/signals/tests.py
+++ b/tests/signals/tests.py
@@ -4,13 +4,13 @@ from django.apps.registry import Apps
from django.db import models
from django.db.models import signals
from django.dispatch import receiver
-from django.test import TestCase
+from django.test import SimpleTestCase, TestCase
from django.test.utils import isolate_apps
from .models import Author, Book, Car, Person
-class BaseSignalTest(TestCase):
+class BaseSignalSetup:
def setUp(self):
# Save up the number of connected signals so that we can check at the
# end that all the signals we register get properly unregistered (#9989)
@@ -32,7 +32,7 @@ class BaseSignalTest(TestCase):
self.assertEqual(self.pre_signals, post_signals)
-class SignalTests(BaseSignalTest):
+class SignalTests(BaseSignalSetup, TestCase):
def test_model_pre_init_and_post_init(self):
data = []
@@ -281,7 +281,7 @@ class SignalTests(BaseSignalTest):
ref.assert_not_called()
-class LazyModelRefTest(BaseSignalTest):
+class LazyModelRefTests(BaseSignalSetup, SimpleTestCase):
def setUp(self):
super().setUp()
self.received = []
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py
index d16757637e..8887f2d22d 100644
--- a/tests/test_runner/test_discover_runner.py
+++ b/tests/test_runner/test_discover_runner.py
@@ -3,7 +3,7 @@ from argparse import ArgumentParser
from contextlib import contextmanager
from unittest import TestSuite, TextTestRunner, defaultTestLoader
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.test.runner import DiscoverRunner
from django.test.utils import captured_stdout
@@ -20,7 +20,7 @@ def change_cwd(directory):
os.chdir(old_cwd)
-class DiscoverRunnerTest(TestCase):
+class DiscoverRunnerTests(SimpleTestCase):
def test_init_debug_mode(self):
runner = DiscoverRunner()
diff --git a/tests/timezones/tests.py b/tests/timezones/tests.py
index 6166719bd7..0119bbe06d 100644
--- a/tests/timezones/tests.py
+++ b/tests/timezones/tests.py
@@ -581,7 +581,7 @@ class ForcedTimeZoneDatabaseTests(TransactionTestCase):
@skipUnlessDBFeature('supports_timezones')
@override_settings(TIME_ZONE='Africa/Nairobi', USE_TZ=True)
-class UnsupportedTimeZoneDatabaseTests(TestCase):
+class UnsupportedTimeZoneDatabaseTests(SimpleTestCase):
def test_time_zone_parameter_not_supported_if_database_supports_timezone(self):
connections.databases['tz'] = connections.databases['default'].copy()
diff --git a/tests/utils_tests/test_feedgenerator.py b/tests/utils_tests/test_feedgenerator.py
index 45c669dcfa..3847637aba 100644
--- a/tests/utils_tests/test_feedgenerator.py
+++ b/tests/utils_tests/test_feedgenerator.py
@@ -1,12 +1,11 @@
import datetime
-import unittest
-from django.test import TestCase
+from django.test import SimpleTestCase
from django.utils import feedgenerator
from django.utils.timezone import get_fixed_timezone, utc
-class FeedgeneratorTest(unittest.TestCase):
+class FeedgeneratorTests(SimpleTestCase):
"""
Tests for the low-level syndication feed framework.
"""
@@ -131,10 +130,6 @@ class FeedgeneratorTest(unittest.TestCase):
feed_content = feed.writeString('utf-8')
self.assertIn('href="/link/" rel="alternate"', feed_content)
-
-class FeedgeneratorDBTest(TestCase):
-
- # setting the timezone requires a database query on PostgreSQL.
def test_latest_post_date_returns_utc_time(self):
for use_tz in (True, False):
with self.settings(USE_TZ=use_tz):
diff --git a/tests/utils_tests/test_module_loading.py b/tests/utils_tests/test_module_loading.py
index c114d84d88..ac54fd6b8e 100644
--- a/tests/utils_tests/test_module_loading.py
+++ b/tests/utils_tests/test_module_loading.py
@@ -4,7 +4,7 @@ import unittest
from importlib import import_module
from zipimport import zipimporter
-from django.test import SimpleTestCase, TestCase, modify_settings
+from django.test import SimpleTestCase, modify_settings
from django.test.utils import extend_sys_path
from django.utils.module_loading import (
autodiscover_modules, import_string, module_has_submodule,
@@ -119,7 +119,7 @@ class EggLoader(unittest.TestCase):
import_module('egg_module.sub1.sub2.no_such_module')
-class ModuleImportTestCase(TestCase):
+class ModuleImportTests(SimpleTestCase):
def test_import_string(self):
cls = import_string('django.utils.module_loading.import_string')
self.assertEqual(cls, import_string)
diff --git a/tests/validation/__init__.py b/tests/validation/__init__.py
index 01575c1b10..5d87d8c731 100644
--- a/tests/validation/__init__.py
+++ b/tests/validation/__init__.py
@@ -1,8 +1,7 @@
from django.core.exceptions import ValidationError
-from django.test import TestCase
-class ValidationTestCase(TestCase):
+class ValidationAssertions:
def assertFailsValidation(self, clean, failed_fields, **kwargs):
with self.assertRaises(ValidationError) as cm:
clean(**kwargs)
diff --git a/tests/validation/test_custom_messages.py b/tests/validation/test_custom_messages.py
index b33e232e88..4e4897e5b4 100644
--- a/tests/validation/test_custom_messages.py
+++ b/tests/validation/test_custom_messages.py
@@ -1,8 +1,10 @@
-from . import ValidationTestCase
+from django.test import SimpleTestCase
+
+from . import ValidationAssertions
from .models import CustomMessagesModel
-class CustomMessagesTest(ValidationTestCase):
+class CustomMessagesTests(ValidationAssertions, SimpleTestCase):
def test_custom_simple_validator_message(self):
cmm = CustomMessagesModel(number=12)
self.assertFieldFailsValidationWithMessage(cmm.full_clean, 'number', ['AAARGH'])
diff --git a/tests/validation/test_validators.py b/tests/validation/test_validators.py
index 733ff5c139..9817b6594b 100644
--- a/tests/validation/test_validators.py
+++ b/tests/validation/test_validators.py
@@ -1,8 +1,10 @@
-from . import ValidationTestCase
+from django.test import SimpleTestCase
+
+from . import ValidationAssertions
from .models import ModelToValidate
-class TestModelsWithValidators(ValidationTestCase):
+class TestModelsWithValidators(ValidationAssertions, SimpleTestCase):
def test_custom_validator_passes_for_correct_value(self):
mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=42,
f_with_iterable_of_validators=42)
diff --git a/tests/validation/tests.py b/tests/validation/tests.py
index 131ecda74d..bc23ac5808 100644
--- a/tests/validation/tests.py
+++ b/tests/validation/tests.py
@@ -3,14 +3,14 @@ from django.core.exceptions import NON_FIELD_ERRORS
from django.test import TestCase
from django.utils.functional import lazy
-from . import ValidationTestCase
+from . import ValidationAssertions
from .models import (
Article, Author, GenericIPAddressTestModel, GenericIPAddrUnpackUniqueTest,
ModelToValidate,
)
-class BaseModelValidationTests(ValidationTestCase):
+class BaseModelValidationTests(ValidationAssertions, TestCase):
def test_missing_required_field_raises_error(self):
mtv = ModelToValidate(f_with_custom_validator=42)
@@ -126,7 +126,7 @@ class ModelFormsTests(TestCase):
self.assertEqual(list(form.errors), ['pub_date'])
-class GenericIPAddressFieldTests(ValidationTestCase):
+class GenericIPAddressFieldTests(ValidationAssertions, TestCase):
def test_correct_generic_ip_passes(self):
giptm = GenericIPAddressTestModel(generic_ip="1.2.3.4")