繁体   English   中英

单元测试中的 assertEqual 与 assertSetEqulal

[英]assertEqual vs assertSetEqulal in unittest

python unittest.TestCase 中的 assertEquals 和 assertSetEqual 之间是否存在差异,用于断言集合或冻结集?

如果没有,为什么会有 assertSetEqual?

同样对于这种情况,我们可以使用 assertCountEqual 和 assertSequenceEqual!

.
.
.

self.assertEqual({1, 2, 3}, {1, 2, 3})
self.assertSetEqual({1, 2, 3}, {1, 2, 3})

.
.
.

特定于类型的调用在失败时会给出特定于类型的错误消息。 例如,对于一个集合,它将列出在每个集合中找到但在另一个集合中找不到的元素。

文档指出,如果两个参数的类型完全相同并且存在特定类型的测试,assertEqual 将调用特定类型的测试——因此,对于两个集合,assertEqual 将调用 assertSetEqual 并因此显示更有用的错误消息。 但是,如果一个 arg 是一个集合而另一个是 frozenset,它就不会这样做。 这可能不会经常出现,但这是您可以直接调用 assertSetEqual 的一种情况。

>>> TestCase().assertEqual({1, 2, 3}, frozenset((2, 1)))
Traceback (most recent call last):
...
AssertionError: {1, 2, 3} != frozenset({1, 2})
>>> TestCase().assertSetEqual({1, 2, 3}, frozenset((2, 1)))
Traceback (most recent call last):
 ...
AssertionError: Items in the first set but not the second:
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM