assertEquals与python中的assertEqual

Jan*_*usz 161 python unit-testing

蟒蛇assertEqualsassertEqual蟒蛇之间有区别unittest.TestCase吗?

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

Jar*_*die 180

好问题!

实际上,在Python 2.6,两者assertEqualassertEquals有方便的别名failUnlessEqual.来源声明他们:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual
Run Code Online (Sandbox Code Playgroud)

Python 3中,您failUnlessEqual可以明确地弃用.assertEquals带有这个评论:-)

#ssutrtion方法的同义词

#复数是无证件的.让他们这样做以阻止使用.

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

#在这些问题上经历一个弃用周期会让很多人感到烦恼.

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

  • 实际上关于复数的评论是模棱两可的.它说"复数"没有记载.你的最后一句话表明你理解这是指用's'结尾的方法名,比如`assertEquals`.然而在语法上,*等于*是动词的单数(第三人称)形式,而不是复数形式.我认为你正确地理解了评论作者的意思,但"复数"这个词是错误的. (28认同)

Mat*_*ell 36

3.3更新:从26.3.7.1.1开始.不推荐使用的别名:

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

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...
Run Code Online (Sandbox Code Playgroud)


小智 16

不只是Python 3.x,因为Python 2.7 assertEquals也被弃用了:

Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals
Run Code Online (Sandbox Code Playgroud)

25.3.7.1.1开始.不推荐使用的别名


Kat*_*one 5

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

failIf(some_condition)
Run Code Online (Sandbox Code Playgroud)

超过

assertFalse(some_condition)
Run Code Online (Sandbox Code Playgroud)

但喜欢

assertEqual(a, b)
Run Code Online (Sandbox Code Playgroud)

在其他两个(assertEquals(a, b)打扰我的语法感)。

“唯一一种明显的方法”已经优先考虑。