Existe-t-il une différence entre assertEquals
et assertEqual
dans le python unittest.TestCase
?
Et s'il n'y en a pas, pourquoi y a-t-il deux fonctions? Seulement pour plus de commodité?
Bonne question!
En fait, dans Python 2.6, assertEqual
et assertEquals
sont des alias de commodité pour failUnlessEqual
. La source les déclare ainsi:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Dans Python , failUnlessEqual
est explicitement obsolète. assertEquals
porte ce commentaire :-)
# Synonymes pour méthodes d'assertion
# Les pluriels ne sont pas documentés. Gardez-les ainsi pour décourager l'utilisation.
# Ne pas ajouter plus. Ne pas enlever.
# Passer par un cycle de dépréciation sur ceux-ci dérangerait beaucoup de gens.
Donc, le résultat semble être que vous devriez utiliser ce que vous voulez pour Python 2.x, mais tendez vers assertEqual
pour Python 3 .
Une mise à jour 3.3: à partir de 26.3.7.1.1. Alias déconseillés :
Pour des raisons historiques, certaines des méthodes TestCase avaient un ou plusieurs alias qui sont maintenant obsolètes. Le tableau suivant répertorie les noms corrects ainsi que leurs alias déconseillés:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Pas seulement pour Python 3.x, puisque Python 2.7 assertEquals
est également obsolète:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Je pense que c’était une tension entre "le seul moyen évident de le faire" et "alias de faire en sorte que le code général coule sémantiquement". Personnellement j'ai trouvé que j'aime lire
failIf(some_condition)
plus de
assertFalse(some_condition)
mais aimé
assertEqual(a, b)
sur les deux autres (assertEquals(a, b)
gêne mon sens de la grammaire).
Le "seul moyen évident de le faire" a pris le pas sur l'avenir.
Je ne trouve aucune mention d'assertEquals dans http://docs.python.org/library/unittest.html . Cependant, lorsque j'importe TestCase et que je fais ensuite une "aide (TestCase)", il est répertorié. Je pense que c'est juste un synonyme de commodité.
Si vous ouvrez le code source dans python 2.7, vous pouvez trouver ceci:
# 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