assertEquals и assertEqual в Python - PullRequest
       137

assertEquals и assertEqual в Python

151 голосов
/ 31 мая 2009

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

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

Ответы [ 6 ]

168 голосов
/ 31 мая 2009

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

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

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

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

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

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

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

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

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

34 голосов
/ 24 февраля 2014

A 3.3 обновление: с 26.3.7.1.1. Устаревшие псевдонимы :

По историческим причинам некоторые методы TestCase имели один или несколько псевдонимов, которые в настоящее время не рекомендуются. В следующей таблице перечислены правильные имена вместе с их устаревшими псевдонимами:

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...
15 голосов
/ 09 января 2015

Не только для Python 3.x, поскольку Python 2.7 assertEquals также устарел:

Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals

С 25.3.7.1.1. Устаревшие псевдонимы

4 голосов
/ 02 июня 2009

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

failIf(some_condition)

свыше

assertFalse(some_condition)

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

assertEqual(a, b)

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

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

2 голосов
/ 31 мая 2009

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

0 голосов
/ 20 марта 2019

Если вы откроете исходный код в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...