assertEqual的局限性

时间:2015-01-28 18:03:11

标签: python python-2.7 python-unittest

Python assertEqualunittest的{​​{3}}说

  

assertEqual(first, second, msg=None)

     

测试第一个和第二个是否相等。如果值不相等,则测试将失败

如果我输入了first& second是深层嵌套对象(例如dict和list列表的dict等),对于无法与上述断言语句进行比较的内容有任何限制吗?到目前为止,我知道如果在任何深度,都有一个列表,它的顺序必须在双方都匹配(因为这就是我通常比较列表的方式)。

在文档中没有具体提到嵌套对象,我找不到明确的答案。

1 个答案:

答案 0 :(得分:1)

assertEqual调用相应的type equality function(如果可用)。例如列表上的assertEqual实际上会调用assertListEqual。如果未指定类型相等函数,则assertEqual simply uses the == operator确定相等。

请注意,如果您愿意,可以制作并注册自己的类型相等函数。

如果您想查看实际实施,assertListEqual只需委托assertSequenceEqual ultimately uses != to compare items。如果子项是嵌套的,那么它会被比较,但python会比较这些项。例如,如果符合以下条件,则列表被视为相同:

  

序列类型也支持比较。特别是,通过比较相应的元素,按字典顺序比较元组和列表。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同类型并且具有相同的长度。 (有关完整详细信息,请参阅语言参考中的比较。)

请参阅python sequences上的文档。