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