summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pope <nick.pope@flightdataservices.com>2021-02-21 15:37:03 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-02-22 09:27:46 +0100
commit0e4e35722a03d2e4cb0b993f9b167103928b3199 (patch)
tree46b026f146b273414c094582ad7abfba6c6718c3
parent87acbf063156ebb3fec3d35ef139895335061e0b (diff)
Fixed #32469 -- Made assertQuerysetEqual() respect maxDiff when ordered=False.
-rw-r--r--django/test/testcases.py2
-rw-r--r--tests/test_utils/tests.py31
2 files changed, 32 insertions, 1 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 5c8a46b153..eacf852118 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1062,7 +1062,7 @@ class TransactionTestCase(SimpleTestCase):
if transform is not None:
items = map(transform, items)
if not ordered:
- return self.assertEqual(Counter(items), Counter(values), msg=msg)
+ return self.assertDictEqual(Counter(items), Counter(values), msg=msg)
# For example qs.iterator() could be passed as qs, but it does not
# have 'ordered' attribute.
if len(values) > 1 and hasattr(qs, 'ordered') and not qs.ordered:
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 9255315e98..9465ace804 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -325,6 +325,37 @@ class AssertQuerysetEqualTests(TestCase):
ordered=False
)
+ def test_maxdiff(self):
+ names = ['Joe Smith %s' % i for i in range(20)]
+ Person.objects.bulk_create([Person(name=name) for name in names])
+ names.append('Extra Person')
+
+ with self.assertRaises(AssertionError) as ctx:
+ self.assertQuerysetEqual(
+ Person.objects.filter(name__startswith='Joe'),
+ names,
+ ordered=False,
+ transform=lambda p: p.name,
+ )
+ self.assertIn('Set self.maxDiff to None to see it.', str(ctx.exception))
+
+ original = self.maxDiff
+ self.maxDiff = None
+ try:
+ with self.assertRaises(AssertionError) as ctx:
+ self.assertQuerysetEqual(
+ Person.objects.filter(name__startswith='Joe'),
+ names,
+ ordered=False,
+ transform=lambda p: p.name,
+ )
+ finally:
+ self.maxDiff = original
+ exception_msg = str(ctx.exception)
+ self.assertNotIn('Set self.maxDiff to None to see it.', exception_msg)
+ for name in names:
+ self.assertIn(name, exception_msg)
+
class AssertQuerysetEqualDeprecationTests(TestCase):
@classmethod