unit - assertEquals vs. assertEqual en python
unittest python 3 (5)
¿Hay alguna diferencia entre assertEquals
y assertEqual
en python unittest.TestCase
?
Y si no hay, ¿por qué hay dos funciones? ¿Solo 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 , hasta su punto, failUnlessEqual
está explícitamente obsoleto. assertEquals
lleva este comentario :-)
# Sinónimos para assertion methods
# Los plurales no están documentados. Guárdelos de esa manera para desalentar el uso.
# No agregue más. No quitar.
# Pasar por un ciclo de desaprobación de estos molestaría a muchas personas.
Entonces, el resultado parece ser que debes usar lo que quieras para Python 2.x, pero tender hacia assertEqual
para Python 3.
Creo que esta era la tensión entre la "única forma obvia de hacerlo" vs. "alias para hacer que el código general fluya semánticamente". Personalmente encontré que me gusta leer
failIf(some_condition)
encima
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.
No solo para Python 3.x, ya que Python 2.7 assertEquals
ha quedado obsoleto:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Desde 25.3.7.1.1. Alias en desuso
Una actualización 3.3: de 26.3.7.1.1. Alias en desuso :
Por razones históricas, algunos de los métodos 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
...