web-dev-qa-db-fra.com

assertEquals vs assertEqual dans python

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é?

156
Janusz

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 .

172
Jarret Hardie

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
...
34
Matthew Cornell

Pas seulement pour Python 3.x, puisque Python 2.7 assertEquals est également obsolète:

Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals

De 25.3.7.1.1. Alias ​​déconseillés

15
chungnho

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.

4
Kathy Van Stone

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

2
Fred Larson

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
0
Rabhi salim