J'ai un test unitaire pour mon application GAE:Google App Engine UnitTest: Difficulté avec assertEquals
def test_getNeighborhoodKeys_twoCourses(self):
cs1110, cs2110 = testutils.setUpSimpleCourses()
foo = getFooResult()
bar = getBarResult()
self.assertEquals(foo, bar) # fails
Ceci est l'échec:
AssertionError: set([CS 1110: Untitled, CS 2110: Untitled]) != set([CS 2110: Untitled, CS 1110: Untitled])
Il me semble que devrait passer le test. Qu'est-ce qui ne va pas?
En fait, je remplace moi-même '__repr__' pour faciliter le débogage. Était-ce une mauvaise décision? Que faire si je devais remplacer "__str__'"? Puis-je laisser "__eq__' et" __hash__' seuls? –
@Rosarch, vous devez surcharger '__eq__' (et' __hash__' peut-être) chaque fois que vous voulez que des instances d'un type codé par un utilisateur puissent comparer des égales sans être identiques (c'est-à-dire la même instance) - la seule raison mentionné le remplacement de '__repr__' est parce que ce qui peut être immédiatement repéré dans le message que vous avez montré, et prouve que les instances appartiennent à un type funky et ne sont pas exactement la même instance, ** pas ** parce que cette substitution a quelque chose à faire avec l'égalité-test en soi. –