Django tests unitaire assertQuerysetEqual

20 Avr

J'utilise de plus en plus le TDD pour mes développements en Python Django, je trouve que les tests unitaires sont essentiels suivant le type de projet et nous font gagner un temps précieux ainsi qu'en robustesse lors du développement d' applications

En essayant de tester 2 querysets dans Django en utilisant la méthode self.assertQuerysetEqual de Django TestCase, permettant comme son nom l'indique de tester l'égalité entre 2 querysets. En essayant d'appliquer cette méthode j'ai eu à chaque fois une exception qui était levée, la voici:

ValueError: Trying to compare non-ordered queryset against more than one ordered values

Voici le code de test en question:

self.assertQuerysetEqual(response.context['listing'], ['<Product: product 1>', '<Product: product 2>'])

Pour l'explication, cette exception est levée, car la liste testée n'a pas d'ordre particulier, il faut donc ordonner la liste pour que l'erreur disparaisse comme ceci:

self.assertQuerysetEqual(response.context['listing'].order_by('name'), ['<Product: product 1>', '<Product: product 2>'])

Maintenant vous pouvez tester vos querysets sans qu'aucune exception ne soit levée juste en ordonnant cette même liste,
voilà pour la petite astuce

Publié le: Jeudi 20 avril 2017
blog comments powered by Disqus
Monter

© Circonflex-studio - Tous droits réservés - Mentions legales
Développeur web indépendant / Webdesigner / Intégrateur
Nice - Cannes - Monaco - Antibes - côte d'azur | site valide HTML 5

Ce site à été développé en Python avec le framework Django

"http://www.cssawards.net/nominee/circonflex-studio/"