首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单元测试的assertEqual和迭代器--只检查内容

单元测试的assertEqual和迭代器--只检查内容
EN

Stack Overflow用户
提问于 2011-09-19 23:08:52
回答 2查看 45.3K关注 0票数 68

在unittest中有没有一种“像样的”方法来检查两个可迭代对象的内容是否相等?我使用了很多元组、列表和numpy数组,我通常只想测试内容而不是类型。目前,我只是简单地转换类型:

代码语言:javascript
复制
self.assertEqual (tuple (self.numpy_data), tuple (self.reference_list))

不久前我使用了这个列表理解:

代码语言:javascript
复制
[self.assertEqual (*x) for x in zip(self.numpy_data, self.reference_list)]

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

EN

回答 2

Stack Overflow用户

发布于 2011-09-19 23:16:03

您可以随时将自己的断言方法添加到TestCase类中:

代码语言:javascript
复制
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

票数 9
EN

Stack Overflow用户

发布于 2017-10-15 21:35:25

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

在Python2.7和Python3中,您需要的是self.assertSequenceEqual。这对项目的顺序很敏感。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7473071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档