68 votes

AssertEqual et iterables de Unittest - vérifier uniquement le contenu

Est-il décent " chemin dans unittest pour vérifier l'égalité du contenu de deux itérable objets? Je suis l'aide d'une beaucoup de tuples, listes et tableaux numpy et normalement, je ne veux test pour le contenu et non pas pour le type. Actuellement, je suis simplement le casting du type:

self.assertEqual (tuple (self.numpy_data), tuple (self.reference_list))

J'ai utilisé cette compréhension de liste il y a:

[self.assertEqual (*x) for x in zip(self.numpy_data, self.reference_list)]

Mais cette solution me semble un peu inférieure à la transtypage parce qu'il n'imprime que des valeurs uniques, si il échoue et aussi de ne pas, pour différentes longueurs de référence et de données (en raison de la fermeture éclair-fonction).

99voto

Cédric Julien Points 24177

En python >= 2.7 :

En python 3 assertItemsEqual méthode est nommée assertCountEqual.

9voto

Ned Batchelder Points 128913

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X