python中的assertEquals与assertEqual

python中的assertEquals与assertEqual,python,unit-testing,Python,Unit Testing,pythonunittest.TestCase中的assertEquals和assertEqual之间有区别吗 如果没有,为什么有两个功能?只是为了方便 我没有发现任何关于assertEquals的提及。然而,当我导入TestCase并执行“帮助(TestCase)”时,它会被列出。我认为这只是方便的同义词。问得好 实际上,在Python 2.6中,assertEqual和assertEquals都是failUnlessEqual的方便别名。消息来源这样声明: # Synonyms for a

python
unittest.TestCase
中的
assertEquals
assertEqual
之间有区别吗


如果没有,为什么有两个功能?只是为了方便

我没有发现任何关于assertEquals的提及。然而,当我导入TestCase并执行“帮助(TestCase)”时,它会被列出。我认为这只是方便的同义词。

问得好

实际上,在Python 2.6中,
assertEqual
assertEquals
都是
failUnlessEqual
的方便别名。消息来源这样声明:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual
在您看来,
failUnlessEqual
显然是不推荐的
assertEquals
带有以下注释:-)

#断言方法的同义词

#复数形式没有记录。保持这种方式,以阻止使用

#不要再加了。不要移除

#在这些问题上经历一个恶性循环会激怒很多人


因此,结果似乎是,您应该在Python2.x中使用您喜欢的任何东西,但在Python3中倾向于使用
assertEqual

我认为这是“只有一种明显的方法”与“alias使整个代码流语义化”之间的矛盾。就我个人而言,我发现我喜欢读书

failIf(some_condition)
结束

但是喜欢

assertEqual(a, b)
另外两个(
assertEquals(a,b)
困扰着我的语法感)

“只有一种明显的方法可以做到这一点”已经占据了优先地位。

3.3更新:来自:

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


不仅仅是Python3.x,因为Python2.7
assertEquals
也被弃用:

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

我知道它没有回答特定的问题,但是如果您在搜索时找到了:

using deprecated method assertEquals()

您只需更改对.assertEqual()的调用(删除等号中的's')

是的,但它严重打破了“唯一显而易见的方法”的咒语:-(@Alex-我不会就此提出任何争议。实际上,关于复数的评论是模棱两可的。它说的是“复数”你的最后一句话表明你理解这是指以“s”结尾的方法名,比如
assertEquals
。但是从语法上讲,equals是动词的单数形式(第三人称),而不是复数形式。我想你正确理解了评论作者的意思,但“复数”一词是错误的。
Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals
using deprecated method assertEquals()