69

2つの反復可能なオブジェクトの内容が等しいかどうかをチェックするための「まともな」方法がunittestにありますか?私は多くのタプル、リスト、およびnumpy配列を使用していますが、通常はコンテンツのみをテストし、タイプはテストしません。現在、私は単にタイプをキャストしています:

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

私は少し前にこのリスト内包表記を使用しました:

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

ただし、このソリューションは、失敗した場合にのみ単一の値を出力し、さまざまな長さの参照とデータに対して失敗しないため、型キャストよりも少し劣っているように見えます(zip関数のため)。

4

3 に答える 3

101

Python 3

Python> = 2.7

于 2011-09-19T15:13:09.453 に答える
9

TestCaseクラスにはいつでも独自のアサーションメソッドを追加できます。

def assertSequenceEqual(self, it1, it2):
    self.assertEqual(tuple(it1), tuple(it2))

または、2.7がどのように定義したかを見てください:http://hg.python.org/cpython/file/14cafb8d1480/Lib/unittest/case.py#l621

于 2011-09-19T15:16:02.693 に答える
0

シーケンス内のアイテムの順序を気にかけているように見えます。したがって、assertItemsEqual/assertCountEqualはあなたのためではありません。

Python2.7およびPython3では、必要なのはですself.assertSequenceEqual。これは、アイテムの順序に影響されます。

于 2017-10-15T13:35:25.103 に答える