Risposte:
Buona domanda!
In realtà, in Python 2.6, entrambi assertEqual
e assertEquals
sono alias di convenienza failUnlessEqual
. La fonte li dichiara così:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
In Python 3 , a tuo punto, failUnlessEqual
è esplicitamente deprecato. assertEquals
porta questo commento :-)
# Sinonimi per metodi di asserzione
# I plurali non sono documentati. Tienili così per scoraggiare l'uso.
# Non aggiungere altro. Non rimuovere.
# Passare attraverso un ciclo di deprecazione su questi infastidirebbe molte persone.
Quindi, il risultato sembra essere che dovresti usare quello che ti piace per Python 2.x, ma tendi verso assertEqual
Python 3.
Un aggiornamento 3.3: dal 26.3.7.1.1. Alias obsoleti :
Per motivi storici, alcuni dei metodi TestCase avevano uno o più alias che ora sono deprecati. La tabella seguente elenca i nomi corretti insieme ai loro alias deprecati:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Non solo per Python 3.x, poiché anche Python 2.7 assertEquals
è stato deprecato:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Penso che questa sia stata la tensione tra "l'unico modo ovvio per farlo" vs "alias per far fluire semanticamente il codice complessivo". Personalmente ho scoperto che mi piace leggere
failIf(some_condition)
al di sopra di
assertFalse(some_condition)
ma mi è piaciuto
assertEqual(a, b)
rispetto agli altri due ( assertEquals(a, b)
disturba il mio senso della grammatica).
L'unico "modo ovvio per farlo" ha avuto la precedenza andando avanti.
Non trovo alcuna menzione di assertEquals in http://docs.python.org/library/unittest.html . Tuttavia, quando importare TestCase e quindi faccio un "aiuto (TestCase)", viene elencato. Penso che sia solo un sinonimo di convenienza.
È quasi lo stesso, tranne che assertEquals è ripreso. Si consiglia di utilizzare assertEqual come qui:
# 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
Fonte online: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Eppure grammaticalmente, eguaglia è una singolare (terza persona) forma di un verbo, non un plurale. Penso che tu abbia capito bene cosa significasse il commentatore, ma la parola "plurale" è sbagliata.