afirmarEquals vs afirmarEqual en python

3 minutos de lectura

avatar de usuario
Janusz

¿Hay alguna diferencia entre assertEquals y assertEqual en la pitón unittest.TestCase?

Y si no la hay, ¿por qué hay dos funciones? ¿Solo por comodidad?

avatar de usuario
Jarret Hardie

De hecho, en Python 2.6, ambos assertEqual y assertEquals son alias de conveniencia para failUnlessEqual. La fuente los declara así:

# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual

En Pitón 3a tu punto, failUnlessEqual está explícitamente en desuso. assertEquals lleva este comentario 🙂

# 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.

Entonces, el resultado parece ser que deberías usar lo que quieras para Python 2.x, pero tender hacia assertEqual para Pitón 3.

  • En realidad, el comentario sobre los plurales es ambiguo. Dice que “los plurales” son indocumentados. Su oración final indica que entiende que esto significa nombres de métodos que terminan con ‘s’, como assertEquals. Sin embargo, gramaticalmente, es igual es una forma singular (tercera persona) de un verbo, no un plural. Creo que entendiste correctamente lo que quiso decir el autor del comentario, pero la palabra ‘plural’ está equivocada.

    – LarsH

    25 de agosto de 2014 a las 16:12


avatar de usuario
Mateo Cornell

Una actualización 3.3: Desde 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 obsoletos:

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

No solo para Python 3.x, desde Python 2.7 assertEquals ha sido desaprobado también:

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

De 25.3.7.1.1. Alias ​​en desuso

Creo que esto fue tensión entre la “única forma obvia de hacerlo” frente a “alias para hacer que el código general fluya semánticamente”. Personalmente descubrí que me gusta leer.

failIf(some_condition)

sobre

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 tenido prioridad 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 sólo un sinónimo de conveniencia.

  • Sí, pero rompe gravemente el mantra de “la única forma obvia de hacerlo” :-(.

    – Alex Martelli

    31 de mayo de 2009 a las 1:35

  • @Alex: no obtendrás ningún argumento de mí sobre eso.

    – Fred Larson

    31 de mayo de 2009 a las 1:47

avatar de usuario
mrmuggles

Sé que no responde la pregunta específica, pero si llegaste aquí mientras buscabas:

using deprecated method assertEquals()

Solo necesita cambiar la llamada a .assertEqual() (elimine la ‘s’ en equalS)

  • Sí, pero rompe gravemente el mantra de “la única forma obvia de hacerlo” :-(.

    – Alex Martelli

    31 de mayo de 2009 a las 1:35

  • @Alex: no obtendrás ningún argumento de mí sobre eso.

    – Fred Larson

    31 de mayo de 2009 a las 1:47

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad