unittest unit test skipif run modules examples español python unit-testing

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