在python assertEquals与assertEqual

在python unittest.TestCaseassertEqualsassertEqual有什么区别吗?

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

好问题!

实际上,在Python 2.6中, assertEqualassertEquals都是failUnlessEqual便利别名。 信息来源如此声明:

  # Synonyms for assertion methods assertEqual = assertEquals = failUnlessEqual 

在Python 3中 ,就你而言, failUnlessEqual是明确的弃用。 assertEquals带有这个评论:-)

#断言方法的同义词

#复数是无证的。 保持他们的方式来阻止使用。

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

#对这些不屑一顾的循环会让很多人烦恼。

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

3.3更新:从26.3.7.1.1开始。 已弃用的别名 :

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

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

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

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

从25.3.7.1.1开始。 已弃用的别名

我认为这是“只有一个显而易见的做法”与“使整个代码stream语义化的别名”之间的矛盾。 我个人发现我喜欢阅读

 failIf(some_condition) 

过度

 assertFalse(some_condition) 

但喜欢

 assertEqual(a, b) 

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

“只有一个显而易见的办法”今后优先。

http://docs.python.org/library/unittest.html中没有提到assertEquals。; 但是,当我导入TestCase然后做一个“帮助(TestCase)”,它被列出。 我认为这只是方便的同义词。