#33762: test_random_ordering not really testing randomization
------------------------------------------------+------------------------
               Reporter:  Sicong                |          Owner:  nobody
                   Type:  Cleanup/optimization  |         Status:  new
              Component:  Testing framework     |        Version:
               Severity:  Normal                |       Keywords:
           Triage Stage:  Unreviewed            |      Has patch:  0
    Needs documentation:  0                     |    Needs tests:  0
Patch needs improvement:  0                     |  Easy pickings:  0
                  UI/UX:  0                     |
------------------------------------------------+------------------------
 Unit test
 
[https://github.com/django/django/blob/6f73eb9d90cfec684529aab48d517e3d6449ba8c/tests/ordering/tests.py#L235
 test_random_ordering] only checks the length of result queryset. It's not
 checking if order_by("?") giving same result every time.

 My proposed solution is like this. It's very unlikely that all 10 items
 generated with order_by("?") are the same.
 {{{
     def test_random_ordering(self):
         """
         Use '?' to order randomly.
         """
         articles = []
         # Iterate 10 times, items in result set shouldn't be all the same
         for _ in range(10):
             articles.append(list(Article.objects.order_by("?")))

         self.assertNotEqual(articles.count(articles[0]), 10)

 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33762>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018121d5328b-c33583b2-2f2b-4e86-b2c0-735f67d64766-000000%40eu-central-1.amazonses.com.

Reply via email to