Respostas:
Boa pergunta!
Na verdade, no Python 2.6, ambos assertEqual
e assertEquals
são aliases de conveniência para failUnlessEqual
. A fonte declara-os assim:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
No Python 3 , ao seu ponto, failUnlessEqual
é explicitamente reprovado. assertEquals
carrega este comentário :-)
# Sinônimos para métodos de asserção
# Os plurais não são documentados. Mantenha-os dessa maneira para desencorajar o uso.
# Não adicione mais. Não remova.
# Passar por um ciclo de depreciação com isso irritaria muitas pessoas.
Portanto, o resultado parece ser que você deve usar o que quiser no Python 2.x, mas tender assertEqual
para o Python 3.
Uma atualização 3.3: a partir de 26.3.7.1.1. Aliases preteridos :
Por razões históricas, alguns dos métodos do TestCase tinham um ou mais aliases que foram descontinuados. A tabela a seguir lista os nomes corretos, juntamente com seus aliases obsoletos:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Não apenas para o Python 3.x, pois o Python 2.7 assertEquals
também foi preterido:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
A partir de 25.3.7.1.1. Aliases preteridos
Eu acho que essa foi a tensão entre a "única maneira óbvia de fazer isso" versus "alias para fazer o código geral fluir semanticamente". Pessoalmente, descobri que gosto de ler
failIf(some_condition)
sobre
assertFalse(some_condition)
mas gostei
assertEqual(a, b)
sobre os outros dois ( assertEquals(a, b)
incomoda meu senso de gramática).
A "única maneira óbvia de fazê-lo" teve precedência no futuro.
Não encontro menção de assertEquals em http://docs.python.org/library/unittest.html . No entanto, quando importo o TestCase e, em seguida, faço uma "ajuda (TestCase)", ela é listada. Eu acho que é apenas um sinônimo de conveniência.
É quase o mesmo, exceto que assertEquals é repricado. É recomendável usar assertEqual como aqui:
# 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
Fonte online: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. No entanto, gramaticalmente, igual é uma forma singular (terceira pessoa) de um verbo, não um plural. Eu acho que você entendeu corretamente o que o autor dos comentários quis dizer, mas a palavra "plural" está errada.