Unittest的assertEqual和iterables-只检查内容

2024-05-07 15:08:57 发布

您现在位置:Python中文网/ 问答频道 /正文

unittest中是否有一种“体面”的方法来检查两个iterable对象内容的相等性? 我使用了很多元组、列表和numpy数组,通常只想测试内容而不是类型。目前我只是简单的铸造类型:

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

我刚才用过这个单子:

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

但是这个解决方案似乎比typecast差一点,因为它只在失败时打印单个值,而且对于不同长度的引用和数据(由于zip函数)也不会失败。


Tags: 对象方法selfnumpy类型内容dataunittest
3条回答

Python3

Python>;=2.7

您始终可以将自己的断言方法添加到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

在我看来,你关心的是序列中项目的顺序。因此,assertItemsEqual/assertCountEqual不适合您。

在Python2.7和Python3中,您需要的是^{}。这对物品的顺序很敏感。

相关问题 更多 >