¿Hay una diferencia entre assertEquals
y assertEqual
en python unittest.TestCase
?assertEquals vs. assertEqual en python
Y si no lo hay, ¿por qué hay dos funciones? ¿Solo por conveniencia?
¿Hay una diferencia entre assertEquals
y assertEqual
en python unittest.TestCase
?assertEquals vs. assertEqual en python
Y si no lo hay, ¿por qué hay dos funciones? ¿Solo por conveniencia?
¡Buena pregunta!
En realidad, en Python 2.6, ambos assertEqual
y assertEquals
son alias de conveniencia para failUnlessEqual
. La fuente de las declara así:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
En Python 3, a su punto, failUnlessEqual
es obsoleto de forma explícita. assertEquals
lleva este comentario :-)
# sinónimos para los métodos de aseveración
# Los plurales son indocumentados. Guárdelos de esa manera para desalentar el uso.
# No agregue más. No quitar.
# Pasar por un ciclo de desaprobación en estos molestaría a muchas personas.
Por lo tanto, el resultado final parece ser que se debe utilizar lo que quiera para Python 2.x, pero tienden hacia assertEqual
para Python 3.
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.
Sí, pero es mal rompe "la única manera obvia de hacerlo" mantra :-( –
@Alex - Usted obtendrá ningún argumento de mí sobre eso. –
Creo que esta fue la tensión entre el "sólo una manera obvia hacerlo "alias" para hacer que el código general fluya semánticamente ". Personalmente, me pareció que me gusta leer
failIf(some_condition)
sobre
assertFalse(some_condition)
pero 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 tenido prioridad en el futuro.
Una actualización 3.3: De 26.3.7.1.1. Deprecated aliases:
Por razones históricas, algunos de los métodos TestCase tenían uno o varios alias que ahora están en desuso. La siguiente tabla muestra los nombres correctos, junto con sus alias en desuso:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
No sólo para Python 3.x, ya que Python 2.7 assertEquals
ya no se utiliza, así:.
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
En realidad, el comentario sobre los plurales es ambiguo. Dice que "los plurales" no están documentados. Su última oración indica que entiende que los nombres de los métodos terminan con "s", como "assertEquals". Sin embargo, gramaticalmente, * equals * es una forma singular (tercera persona) de un verbo, no un plural. Creo que entendiste correctamente lo que quería decir el escritor de comentarios, pero la palabra 'plural' está equivocada. – LarsH