J'ai du mal à comprendre pourquoi la première de ces assertions est OK et la seconde soulève une erreur.En quoi les tests d'appartenance sont-ils différents pour une liste et un ensemble?
subject_list = [Subject("A"), Subject("B"), Subject("C")]
subject_set = set()
subject_set.add(Subject("A"))
subject_set.add(Subject("B"))
subject_set.add(Subject("C"))
self.assertIn(Subject("A"), subject_list)
self.assertIn(Subject("A"), subject_set)
Voici l'erreur:
Traceback (most recent call last):
File "C:\Users\...\testSubject.py", line 34, in testIn
self.assertIn(Subject("A"), subject_set)
AssertionError: <Subject: A> not found in set([<Subject: B>, <Subject: C>, <Subject: A>])
Le test pour l'égalité dans la classe Le sujet est tout simplement self.name == other.name
, et dans un autre UnitTest Je confirme que Subject("A") == Subject("A")
. Je ne peux vraiment pas comprendre pourquoi le sujet est dans la liste et pas dans l'ensemble. Idéalement, j'aimerais que le sujet soit dans les deux.
Merci! L'implémentation d'une fonction __hash __() dans la classe Subject a résolu ce problème. – rtclay