Ответы:
Хороший вопрос!
На самом деле, в 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
Я думаю, что это было противоречие между «единственным очевидным способом сделать это» и «псевдонимом для обеспечения семантического потока всего кода». Лично я нашел, что люблю читать
failIf(some_condition)
над
assertFalse(some_condition)
но понравилось
assertEqual(a, b)
над другими двумя ( assertEquals(a, b)
мешает мое чувство грамматики).
«Единственный очевидный способ сделать это» имеет преимущество в будущем.
Я не нахожу упоминания об assertEquals в http://docs.python.org/library/unittest.html . Однако, когда я импортирую TestCase, а затем выполняю «help (TestCase)», он появляется в списке. Я думаю, что это просто синоним для удобства.
Это почти то же самое, за исключением того, что assertEquals переоценен. Рекомендуется использовать assertEqual как здесь:
# 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
Источник в Интернете: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Тем не менее, грамматически, equals - это форма глагола в единственном числе (от третьего лица), а не множественное число. Я думаю, вы правильно поняли, что имел в виду автор комментариев, но слово «множественное число» ошибочно.