AssertEquals против assertEqual в python

Есть ли разница между assertEquals и assertEqual в python unittest.TestCase?

А если нет, то почему существуют две функции? Только для удобства?

Ответ 1

Хороший вопрос!

Собственно, в Python 2.6 обе assertEqual и assertEquals являются вспомогательными псевдонимами для failUnlessEqual. Источник объявляет их таким образом:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

В Python 3, к вашей точке, failUnlessEqual явно не рекомендуется. assertEquals несет этот комментарий: -)

# Синонимы для методов утверждения

# Множественные числа недокументированы. Держите их таким образом, чтобы препятствовать использованию.

# Не добавляйте больше. Не удаляйте.

# Прохождение цикла устаревания на них может раздражать многих людей.

Итак, кажется, что вы должны использовать то, что вам нравится для Python 2.x, но склонны к assertEqual для Python 3.

Ответ 2

Обновление 3.3: от 26.3.7.1.1. Устаревшие псевдонимы:

По историческим причинам некоторые из методов TestCase имели один или несколько псевдонимов, которые теперь устарели. В следующей таблице перечислены правильные имена и их устаревшие псевдонимы:

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

Ответ 3

Не только для Python 3.x, так как Python 2.7 assertEquals также устарел:

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

От 25.3.7.1.1. Устаревшие псевдонимы

Ответ 4

Я думаю, что это была напряженность между "единственным очевидным способом сделать это" против "псевдонима", чтобы сделать общий поток кода семантически ". Лично я нашел, что люблю читать

failIf(some_condition)

над

assertFalse(some_condition)

но понравился

assertEqual(a, b)

над двумя другими (assertEquals(a, b) беспокоит мое чувство грамматики).

"Только один очевидный способ сделать это" имеет приоритет в будущем.

Ответ 5

Я не нахожу упоминания assertEquals в http://docs.python.org/library/unittest.html. Однако, когда я импортирую TestCase, а затем выполняю "help (TestCase)", он перечисляется. Я думаю, что это просто синоним удобства.

Ответ 6

Если вы откроете исходный код в 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

Или вы можете проверить это: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py