Y a-t-il une différence entre assertEquals
y assertEqual
dans le python unittest.TestCase
?
Et si ce n'est pas le cas, pourquoi y a-t-il deux fonctions ? Seulement par commodité ?
Y a-t-il une différence entre assertEquals
y assertEqual
dans le python unittest.TestCase
?
Et si ce n'est pas le cas, pourquoi y a-t-il deux fonctions ? Seulement par commodité ?
En fait, dans Python 2.6, les deux options assertEqual
y assertEquals
sont des alias pratiques pour failUnlessEqual
. La source les déclare ainsi :
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Sur Python 3 à votre avis, failUnlessEqual
est explicitement déprécié. assertEquals
porte ce commentaire :-)
# 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.
En conclusion, il semble que vous devez utiliser ce que vous voulez pour Python 2.x, mais tendez vers assertEqual
pour Python 3.
En fait, le commentaire sur le pluriel est ambigu. Il dit que "les pluriels" sont non documentés. Votre dernière phrase indique que vous comprenez que cela signifie les noms de méthodes se terminant par un 's', comme assertEquals
. Pourtant, grammaticalement, est égal à est une forme singulière (3ème personne) d'un verbe, pas un pluriel. Je pense que vous avez compris correctement ce que l'auteur du commentaire voulait dire, mais le mot "pluriel" est erroné.
Une mise à jour de la 3.3 : De 26.3.7.1.1. Alias déprécié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épréciés :
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Je pense que c'était une tension entre le "seul moyen évident de le faire" et "l'alias pour rendre le code global fluide sémantiquement". Personnellement, je trouve que j'aime lire
failIf(some_condition)
sur
assertFalse(some_condition)
mais j'ai aimé
assertEqual(a, b)
par rapport aux deux autres ( assertEquals(a, b)
dérange mon sens de la grammaire).
La "seule façon évidente de le faire" a pris le pas sur l'avenir.
Je ne trouve aucune mention de assertEquals dans http://docs.python.org/library/unittest.html . Cependant, lorsque j'importe TestCase et que je fais un "help(TestCase)", il est répertorié. Je pense que c'est juste un synonyme de commodité.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.