Есть ли разница между assertEquals
и assertEqual
в python unittest.TestCase
?
А если нет, то почему существуют две функции? Только для удобства?
Есть ли разница между assertEquals
и assertEqual
в python 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.
Обновление 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)", он перечисляется. Я думаю, что это просто синоним удобства.
Если вы откроете исходный код в 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