Есть ли разница между assertEquals
и assertEqual
в питоне unittest.TestCase
?
А если нет, то почему две функции? Только для удобства?
источник
Есть ли разница между assertEquals
и assertEqual
в питоне unittest.TestCase
?
А если нет, то почему две функции? Только для удобства?
Хороший вопрос!
На самом деле, в Python 2.6 оба assertEqual
и assertEquals
являются псевдонимами удобства failUnlessEqual
. Источник объявляет их так:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
В Python 3 , на ваш взгляд, failUnlessEqual
это явно не рекомендуется. assertEquals
несет этот комментарий :-)
# Синонимы для методов утверждения
# Множественное число не имеет документов. Держите их таким образом, чтобы препятствовать использованию.
# Не добавляйте больше. Не удаляйте.
# Проходя через цикл обесценивания на них будет раздражать многих людей.
В итоге получается, что вы должны использовать все, что вам нравится, для Python 2.x, но стремиться к assertEqual
Python 3.
assertEquals
. Тем не менее, грамматически, equals - это форма глагола в единственном числе (от третьего лица), а не множественное число. Я думаю, вы правильно поняли, что имел в виду автор комментариев, но слово «множественное число» ошибочно.А 3.3 обновление: с 26.3.7.1.1. Устаревшие псевдонимы :
источник
Не только для Python 3.x, так как Python 2.7
assertEquals
также устарел:От 25.3.7.1.1. Устаревшие псевдонимы
источник
Я думаю, что это было противоречие между «единственным очевидным способом сделать это» и «псевдонимом для обеспечения семантического потока всего кода». Лично я нашел, что люблю читать
над
но понравилось
над другими двумя (
assertEquals(a, b)
мешает мое чувство грамматики).«Единственный очевидный способ сделать это» имеет преимущество в будущем.
источник
Я не нахожу упоминания об assertEquals в http://docs.python.org/library/unittest.html . Однако, когда я импортирую TestCase, а затем выполняю «help (TestCase)», он появляется в списке. Я думаю, что это просто синоним для удобства.
источник
Я знаю, что это не отвечает на конкретный вопрос, но если вы попали сюда во время поиска:
Вам просто нужно изменить вызов на .assertEqual () (убрать 's' в equalS)
источник
Это почти то же самое, за исключением того, что assertEquals переоценен. Рекомендуется использовать assertEqual как здесь:
Источник в Интернете: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
источник