summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/test/testcases.py7
-rw-r--r--tests/test_utils/test_serializemixin.py21
2 files changed, 26 insertions, 2 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 53508cdb8a..ec5363b4ea 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1624,12 +1624,15 @@ class SerializeMixin:
"""
lockfile = None
- @classmethod
- def setUpClass(cls):
+ def __init_subclass__(cls, /, **kwargs):
+ super().__init_subclass__(**kwargs)
if cls.lockfile is None:
raise ValueError(
"{}.lockfile isn't set. Set it to a unique value "
"in the base class.".format(cls.__name__))
+
+ @classmethod
+ def setUpClass(cls):
cls._lockfile = open(cls.lockfile)
locks.lock(cls._lockfile, locks.LOCK_EX)
super().setUpClass()
diff --git a/tests/test_utils/test_serializemixin.py b/tests/test_utils/test_serializemixin.py
new file mode 100644
index 0000000000..662ba71ca0
--- /dev/null
+++ b/tests/test_utils/test_serializemixin.py
@@ -0,0 +1,21 @@
+from django.test import SimpleTestCase
+from django.test.testcases import SerializeMixin
+
+
+class TestSerializeMixin(SimpleTestCase):
+ def test_init_without_lockfile(self):
+ msg = (
+ "ExampleTests.lockfile isn't set. Set it to a unique value in the "
+ "base class."
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ class ExampleTests(SerializeMixin, SimpleTestCase):
+ pass
+
+
+class TestSerializeMixinUse(SerializeMixin, SimpleTestCase):
+ lockfile = __file__
+
+ def test_usage(self):
+ # Running this test ensures that the lock/unlock functions have passed.
+ pass