assertEquals против assertEqual в python


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

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

5 132

5 ответов:

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

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

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

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

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

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

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

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

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

обновление 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. Устаревшие псевдонимы

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

failIf(some_condition)

over

assertFalse(some_condition)

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

assertEqual(a, b)

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

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

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