assertEquals vs. assertEqual en python

¿Hay alguna diferencia entre assertEquals y assertEqual en la assertEqual de assertEqual de assertEqual ?

Y si no hay, ¿por qué hay dos funciones? ¿Sólo por conveniencia?

¡Buena pregunta!

En realidad, en Python 2.6, tanto assertEqual como assertEquals son alias de conveniencia para failUnlessEqual . La fuente los declara así:

  # Synonyms for assertion methods assertEqual = assertEquals = failUnlessEqual 

En Python 3 , a su punto, failUnlessEqual está explícitamente en desuso. assertEquals lleva este comentario 🙂

# Sinónimos para métodos de afirmación

# Los plurales son indocumentados. Guárdalos de esa manera para desalentar el uso.

# No agregar más. No quitar.

# Pasar por un ciclo de desaprobación en estos podría molestar a muchas personas.

Entonces, el resultado final es que debes usar lo que quieras para Python 2.x, pero tienden a assertEqual para Python 3.

Una actualización 3.3: A partir del 26.3.7.1.1. Alias ​​en desuso :

Por razones históricas, algunos de los métodos de TestCase tenían uno o más alias que ahora están en desuso. La siguiente tabla enumera los nombres correctos junto con sus alias en desuso:

 Method Name | Deprecated alias | Deprecated alias --------------+------------------+----------------- assertEqual() | failUnlessEqual | assertEquals ... 

No solo para Python 3.x, ya que Python 2.7 assertEquals ha quedado en desuso:

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

A partir del 25.3.7.1.1. Alias ​​en desuso

Creo que esta fue la tensión entre la “única forma obvia de hacerlo” y “el alias para hacer que el código global fluya semánticamente”. Personalmente me ha parecido que me gusta leer.

 failIf(some_condition) 

terminado

 assertFalse(some_condition) 

pero me gustó

 assertEqual(a, b) 

sobre los otros dos ( assertEquals(a, b) molesta mi sentido de la gramática).

La “única forma obvia de hacerlo” ha tomado precedencia en el futuro.

No encuentro ninguna mención de assertEquals en http://docs.python.org/library/unittest.html . Sin embargo, cuando importo TestCase y luego hago una “ayuda (TestCase)”, aparece en la lista. Creo que es solo un sinónimo de conveniencia.

Si abres el código fuente en Python 2.7, puedes encontrar esto:

 # 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