assertEqual和assertIs(assertIs在Python 2.7中引入)之间有什么区别?


问题内容

参考-http://docs.python.org/library/unittest.html#assert-
methods

assertEqual(a, b)   # checks that a == b
assertIs(a, b)  # checks that a is b  <---- whatever that means????

问题答案:

使用assertEqual这两个对象不必具有相同的类型,它们只需要具有相同的值即可。相比之下,使用assertIs两个对象需要是相同的对象。

assertEqual==运算符一样测试相等性:

运算符<,>,==,>
=,<=和!=比较两个对象的值。这些对象不必具有相同的类型。如果两者都是数字,则它们将转换为通用类型。否则,不同类型的对象总是比较不相等,并且被一致地,任意地排序。

assertIs测试与isis not运算符相同的对象标识:

运算符是否测试对象标识:并且仅当x和y是同一对象时,x is y才是true。x不是y会产生反真值。

以上引用均来自Python文档的5.9比较