¿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