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

时间:2011-09-02 09:51:08

标签: python unit-testing

参考 - 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????

1 个答案:

答案 0 :(得分:15)

使用assertEqual两个对象不需要是同一类型,它们只需要是相同的值。相比之下,使用assertIs两个对象需要是同一个对象。

assertEqual测试相等性,例如==运算符:

  

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

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

  

运算符是和不测试对象标识:当且仅当x和y是同一个对象时,x是y才为真。 x不是y产生反向真值。

以上引用均来自Python文档部分5.9 Comparisons