Bonjour à tous,
En refactorant du code Django cet après-midi, je lance ma suite de tests après avoir fait mes tests manuels (qui fonctionnaient).
J’ai plusieurs erreurs à cause d’une liste qui ne contiendrait pas une certaine valeur, alors qu’elle devrait la contenir (je fais une recherche de l’index de la valeur justement).
En utilisant le debugger de PyCharm en pas-à-pas, impossible de voir ce qui ne va pas.
Je me décide alors à print la variable, et quelle ne fût pas ma surprise de voir le résultat : le print de la variable renvoie [2, 3, 4]
alors que le debugger me dit que la variable vaut [2, 4]
!
C’est encore pire, en assignant deux fois d’affilée ma variable, elle ne contient pas la même chose :
Je précise que la fonction get_ordered_subscriptions
ne modifie pas la base, grossièrement elle filtre puis elle ordonne les résultats :
def get_accepted_subscriptions(self):
"""
Returns accepted subscriptions.
:return: Accepted subscriptions
:rtype: QuerySet of SideBySideSubscription
"""
accepted_subscriptions = SideBySideSubscription.objects.filter(
tournament_id=self.id
)
accepted_subscriptions = accepted_subscriptions.filter(
status=SideBySideSubscription.STATUS_ACCEPTED
)
return accepted_subscriptions
def get_ordered_subscriptions(self):
"""
Get ordered subscriptions.
:return: Ordered subscriptions
:rtype: QuerySet of SideBySideSubscription
"""
return self.get_accepted_subscriptions().order_by("-result", "-score", "-kp")
Par conséquent, je ne comprends pas du tout d’où peut provenir l’erreur. Il m’arrive de temps en temps d’avoir des erreurs bizarres avec la suite de tests de Django, est-ce que ça pourrait venir de là ?
Merci d’avance !