Existe-t-il un moyen "décent" unittest de vérifier l’égalité du contenu de deux objets itérables? J'utilise beaucoup de n-uplets, de listes et de tableaux numpy et je souhaite généralement uniquement tester le contenu et non le type. Actuellement, je lance simplement le type:
self.assertEqual (Tuple (self.numpy_data), Tuple (self.reference_list))
J'ai utilisé cette compréhension de liste il y a quelque temps:
[self.assertEqual (*x) for x in Zip(self.numpy_data, self.reference_list)]
Mais cette solution semble un peu inférieure à la conversion de type car elle n’imprime que des valeurs uniques en cas d’échec et n’est pas défaillante pour différentes longueurs de référence et de données (en raison de la fonction Zip).
Vous pouvez toujours ajouter vos propres méthodes d'assertion à votre classe TestCase:
def assertSequenceEqual(self, it1, it2):
self.assertEqual(Tuple(it1), Tuple(it2))
ou regardez comment 2.7 l'a défini: http://hg.python.org/cpython/file/14cafb8d1480/Lib/unittest/case.py#l621
Il me semble que vous vous souciez de l'ordre des éléments dans les séquences. Par conséquent, assertItemsEqual
/assertCountEqual
n'est pas pour vous.
En Python 2.7 et en Python 3, ce que vous voulez, c'est self.assertSequenceEqual
. Ceci est sensible à l'ordre des éléments.