Add the ability to do unordered comparisons in assertQuerysetEqual.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16654 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
2664fa1896
commit
0686c6b0ee
|
@ -597,7 +597,9 @@ class TransactionTestCase(SimpleTestCase):
|
||||||
msg_prefix + "Template '%s' was used unexpectedly in rendering"
|
msg_prefix + "Template '%s' was used unexpectedly in rendering"
|
||||||
" the response" % template_name)
|
" 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)
|
return self.assertEqual(map(transform, qs), values)
|
||||||
|
|
||||||
def assertNumQueries(self, num, func=None, *args, **kwargs):
|
def assertNumQueries(self, num, func=None, *args, **kwargs):
|
||||||
|
|
|
@ -1592,7 +1592,7 @@ your test suite.
|
||||||
``target_status_code`` will be the url and status code for the final
|
``target_status_code`` will be the url and status code for the final
|
||||||
point of the redirect chain.
|
point of the redirect chain.
|
||||||
|
|
||||||
.. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr)
|
.. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr, ordered=True)
|
||||||
|
|
||||||
.. versionadded:: 1.3
|
.. versionadded:: 1.3
|
||||||
|
|
||||||
|
@ -1603,9 +1603,16 @@ your test suite.
|
||||||
each value is compared. Any other callable can be used if ``repr()`` doesn't
|
each value is compared. Any other callable can be used if ``repr()`` doesn't
|
||||||
provide a unique or helpful comparison.
|
provide a unique or helpful comparison.
|
||||||
|
|
||||||
The comparison is also ordering dependent. If ``qs`` doesn't provide an
|
By default, the comparison is also ordering dependent. If ``qs`` doesn't
|
||||||
implicit ordering, you will need to apply a ``order_by()`` clause to your
|
provide an implicit ordering, you can set the ``ordered`` parameter to
|
||||||
queryset to ensure that the test will pass reliably.
|
``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)
|
.. method:: TestCase.assertNumQueries(num, func, *args, **kwargs)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue