python assertEquals
中的assertEqual
和unittest.TestCase
之间是否存在差异?
如果没有,为什么有两个功能?仅为方便起见?
答案 0 :(得分:167)
好问题!
实际上,在Python 2.6中,assertEqual
和assertEquals
都是failUnlessEqual
的便捷别名。消息来源声明了这一点:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
在Python 3中,您明确弃用了failUnlessEqual
。 assertEquals
带有此评论: - )
#断言方法的同义词
#复数是没有记录的。保持这种方式阻止使用。
#不要添加更多。不要删除。
#对这些进行弃用循环会让很多人感到烦恼。
所以,结果似乎是你应该使用你喜欢的任何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
答案 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