Python assertEqual
中unittest
的{{3}}说
assertEqual(first, second, msg=None)
测试第一个和第二个是否相等。如果值不相等,则测试将失败
如果我输入了first
& second
是深层嵌套对象(例如dict和list列表的dict等),对于无法与上述断言语句进行比较的内容有任何限制吗?到目前为止,我知道如果在任何深度,都有一个列表,它的顺序必须在双方都匹配(因为这就是我通常比较列表的方式)。
在文档中没有具体提到嵌套对象,我找不到明确的答案。
答案 0 :(得分:1)
assertEqual
调用相应的type equality function(如果可用)。例如列表上的assertEqual
实际上会调用assertListEqual
。如果未指定类型相等函数,则assertEqual
simply uses the ==
operator确定相等。
请注意,如果您愿意,可以制作并注册自己的类型相等函数。
如果您想查看实际实施,assertListEqual
只需委托assertSequenceEqual
ultimately uses !=
to compare items。如果子项是嵌套的,那么它会被比较,但python会比较这些项。例如,如果符合以下条件,则列表被视为相同:
序列类型也支持比较。特别是,通过比较相应的元素,按字典顺序比较元组和列表。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同类型并且具有相同的长度。 (有关完整详细信息,请参阅语言参考中的比较。)
请参阅python sequences上的文档。