在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函数),它也不会失败。
发布于 2011-09-19 23:16:03
您可以随时将自己的断言方法添加到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
发布于 2017-10-15 21:35:25
在我看来,你关心的是序列中项目的顺序。因此,assertItemsEqual
/assertCountEqual
不适合您。
在Python2.7和Python3中,您需要的是self.assertSequenceEqual
。这对项目的顺序很敏感。
https://stackoverflow.com/questions/7473071
复制相似问题