Y a-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é?
la source
Y a-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, 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.
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é.Une mise à jour 3.3: à partir du 26.3.7.1.1. Alias obsolètes :
la source
Pas seulement pour Python 3.x, puisque Python 2.7
assertEquals
est également obsolète:À partir du 25.3.7.1.1. Alias obsolètes
la source
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
plus de
mais aimé
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.
la source
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é.
la source
Je sais que cela ne répond pas à la question spécifique, mais si vous êtes arrivé ici en cherchant:
Il vous suffit de changer l'appel à .assertEqual () (supprimer le 's' dans equalS)
la source
C'est presque la même chose sauf que assertEquals est reproduit. Il est recommandé d'utiliser assertEqual comme ici:
Source en ligne: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
la source