Réponses:
Bonne question!
En fait, dans Python 2.6, les deux assertEqual
et assertEquals
sont des alias pratiques pour failUnlessEqual
. La source les déclare ainsi:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Dans Python 3 , à votre point, failUnlessEqual
est explicitement obsolète. assertEquals
porte ce commentaire :-)
# Synonymes de méthodes d'assertion
# Les pluriels ne sont pas documentés. Gardez-les de cette façon pour décourager l'utilisation.
# N'ajoutez pas plus. Ne pas enlever.
# Passer par un cycle de dépréciation sur ces derniers serait ennuyeux de nombreuses personnes.
Donc, le résultat semble être que vous devriez utiliser ce que vous voulez pour Python 2.x, mais plutôt assertEqual
pour Python 3.
Une mise à jour 3.3: à partir du 26.3.7.1.1. Alias obsolètes :
Pour des raisons historiques, certaines des méthodes TestCase avaient un ou plusieurs alias qui sont désormais obsolètes. Le tableau suivant répertorie les noms corrects ainsi que leurs alias obsolètes:
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
À partir du 25.3.7.1.1. Alias obsolètes
Je pense que c'était une tension entre "la seule façon évidente de le faire" et "l'alias pour faire couler sémantiquement le code global". 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)
dérange mon sens de la grammaire).
La "seule façon évidente de le faire" a pris le dessus à l'avenir.
Je ne trouve aucune mention d'assertEquals dans http://docs.python.org/library/unittest.html . Cependant, lorsque j'importe TestCase et que j'effectue une "aide (TestCase)", il est répertorié. Je pense que c'est juste un synonyme de commodité.
C'est presque la même chose sauf que assertEquals est reproduit. Il est recommandé d'utiliser assertEqual comme ici:
# 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
Source en ligne: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Pourtant grammaticalement, equals est une forme singulière (à la troisième personne) d'un verbe, pas un pluriel. Je pense que vous avez bien compris ce que le commentateur voulait dire, mais le mot «pluriel» est erroné.