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

11 投票
1 回答
11337 浏览
提问于 2025-04-17 01:13

参考资料 - 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 个回答

24

使用 assertEqual 时,两个对象不需要是同一种类型,只要它们的值相同就可以了。而使用 assertIs 时,两个对象必须是同一个对象。

assertEqual 就像 == 操作符一样,用来检查两个对象的值是否相等:

操作符 <, >, ==, >=, <= 和 != 用来比较两个对象的值。这两个对象不需要是同一种类型。如果它们都是数字,会被转换成一种共同的类型。否则,不同类型的对象总是被认为不相等,并且它们的顺序是有规律但又是任意的。

assertIs 用来检查对象的身份,和 is 以及 is not 操作符的作用一样:

操作符 isis not 用来检查对象是否是同一个:如果 x is y 为真,说明 xy 是同一个对象;而 x is not y 则是相反的结果。

以上内容摘自 Python 文档的 5.9 比较 部分。

撰写回答