assertEquals против assertEqual в python
есть ли разница между assertEquals
и assertEqual
в python unittest.TestCase
?
а если нет, то почему есть две функции? Только для удобства?
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
Я думаю, что это было напряжение между "только один очевидный способ сделать это" против "псевдоним, чтобы сделать общий поток кода семантически". Лично я обнаружил, что мне нравится читать
failIf(some_condition)
over
assertFalse(some_condition)
но понравилось
assertEqual(a, b)
над двумя другими (
assertEquals(a, b)
беспокоит мое чувство грамматики)." только один очевидный способ сделать это " имеет приоритет в будущем.
Я не нахожу никаких упоминаний assertEquals в http://docs.python.org/library/unittest.html. однако, когда я импортирую TestCase, а затем делаю "help(TestCase)", он указан. Я думаю, что это просто синоним для удобства.