Loading django/test/testcases.py +3 −1 Original line number Diff line number Diff line Loading @@ -597,7 +597,9 @@ class TransactionTestCase(SimpleTestCase): msg_prefix + "Template '%s' was used unexpectedly in rendering" " the response" % template_name) def assertQuerysetEqual(self, qs, values, transform=repr): def assertQuerysetEqual(self, qs, values, transform=repr, ordered=True): if not ordered: return self.assertEqual(set(map(transform, qs)), set(values)) return self.assertEqual(map(transform, qs), values) def assertNumQueries(self, num, func=None, *args, **kwargs): Loading docs/topics/testing.txt +11 −4 Original line number Diff line number Diff line Loading @@ -1592,7 +1592,7 @@ your test suite. ``target_status_code`` will be the url and status code for the final point of the redirect chain. .. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr) .. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr, ordered=True) .. versionadded:: 1.3 Loading @@ -1603,9 +1603,16 @@ your test suite. each value is compared. Any other callable can be used if ``repr()`` doesn't provide a unique or helpful comparison. The comparison is also ordering dependent. If ``qs`` doesn't provide an implicit ordering, you will need to apply a ``order_by()`` clause to your queryset to ensure that the test will pass reliably. By default, the comparison is also ordering dependent. If ``qs`` doesn't provide an implicit ordering, you can set the ``ordered`` parameter to ``False``, which turns the comparison into a Python set comparison. .. versionchanged:: 1.4 The ``ordered`` parameter is new in version 1.4. In earlier versions, you would need to ensure the queryset is ordered consistently, possibly via an explicit ``order_by()`` call on the queryset prior to comparison. .. method:: TestCase.assertNumQueries(num, func, *args, **kwargs) Loading Loading
django/test/testcases.py +3 −1 Original line number Diff line number Diff line Loading @@ -597,7 +597,9 @@ class TransactionTestCase(SimpleTestCase): msg_prefix + "Template '%s' was used unexpectedly in rendering" " the response" % template_name) def assertQuerysetEqual(self, qs, values, transform=repr): def assertQuerysetEqual(self, qs, values, transform=repr, ordered=True): if not ordered: return self.assertEqual(set(map(transform, qs)), set(values)) return self.assertEqual(map(transform, qs), values) def assertNumQueries(self, num, func=None, *args, **kwargs): Loading
docs/topics/testing.txt +11 −4 Original line number Diff line number Diff line Loading @@ -1592,7 +1592,7 @@ your test suite. ``target_status_code`` will be the url and status code for the final point of the redirect chain. .. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr) .. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr, ordered=True) .. versionadded:: 1.3 Loading @@ -1603,9 +1603,16 @@ your test suite. each value is compared. Any other callable can be used if ``repr()`` doesn't provide a unique or helpful comparison. The comparison is also ordering dependent. If ``qs`` doesn't provide an implicit ordering, you will need to apply a ``order_by()`` clause to your queryset to ensure that the test will pass reliably. By default, the comparison is also ordering dependent. If ``qs`` doesn't provide an implicit ordering, you can set the ``ordered`` parameter to ``False``, which turns the comparison into a Python set comparison. .. versionchanged:: 1.4 The ``ordered`` parameter is new in version 1.4. In earlier versions, you would need to ensure the queryset is ordered consistently, possibly via an explicit ``order_by()`` call on the queryset prior to comparison. .. method:: TestCase.assertNumQueries(num, func, *args, **kwargs) Loading