assertEquals与python中的assertEqual

时间:2009-05-31 01:07:03

标签: python unit-testing

python assertEquals中的assertEqualunittest.TestCase之间是否存在差异?

如果没有,为什么有两个功能?仅为方便起见?

7 个答案:

答案 0 :(得分:167)

好问题!

实际上,在Python 2.6中,assertEqualassertEquals都是failUnlessEqual的便捷别名。消息来源声明了这一点:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

Python 3中,您明确弃用了failUnlessEqualassertEquals带有此评论: - )

  

#断言方法的同义词

     

#复数是没有记录的。保持这种方式阻止使用。

     

#不要添加更多。不要删除。

     

#对这些进行弃用循环会让很多人感到烦恼。

所以,结果似乎是你应该使用你喜欢的任何Python 2.x,但是对于Python 3倾向于assertEqual

答案 1 :(得分:34)

3.3更新:来自26.3.7.1.1. Deprecated aliases

  

由于历史原因,某些TestCase方法有一个或多个现已弃用的别名。下表列出了正确的名称及其弃用的别名:

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...

答案 2 :(得分:15)

不仅仅适用于Python 3.x,因为Python 2.7 assertEquals也已被弃用:

Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals

来自25.3.7.1.1. Deprecated aliases

答案 3 :(得分:4)

我认为这是“只有一种显而易见的方法”与“别名以使整个代码流在语义上”之间的紧张关系。我个人发现我喜欢阅读

failIf(some_condition)

结束

assertFalse(some_condition)

但喜欢

assertEqual(a, b)

超过其他两个(assertEquals(a, b)困扰我的语法感。)

“只有一种显而易见的方法”优先发展。

答案 4 :(得分:2)

我在http://docs.python.org/library/unittest.html中没有找到任何关于assertEquals的内容。但是,当我导入TestCase然后执行“help(TestCase)”时,会列出它。我认为这只是方便的同义词。

答案 5 :(得分:0)

我知道它不能回答特定问题,但是如果您在搜索时到达此处:

using deprecated method assertEquals()

您只需要将调用更改为.assertEqual()(删除equalS中的's')

答案 6 :(得分:-2)

如果您在python 2.7中打开源代码,则可以找到以下内容:

# Synonyms for assertion methods
# The plurals are undocumented.  Keep them that way to discourage use.
# Do not add more.  Do not remove.
# Going through a deprecation cycle on these would annoy many people.
  

assertEquals = assertEqual

assertNotEquals = assertNotEqual
assertAlmostEquals = assertAlmostEqual
assertNotAlmostEquals = assertNotAlmostEqual
assert_ = assertTrue