C'è una differenza tra assertEquals
e assertEqual
nel python unittest.TestCase
?assertEquals vs. assertEqual in python
E se non c'è, perché ci sono due funzioni? Solo per comodità?
C'è una differenza tra assertEquals
e assertEqual
nel python unittest.TestCase
?assertEquals vs. assertEqual in python
E se non c'è, perché ci sono due funzioni? Solo per comodità?
Buona domanda!
In realtà, in Python 2.6, sia assertEqual
sia assertEquals
sono alias di convenienza per failUnlessEqual
. La fonte li dichiara così:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
In Python 3, al punto, failUnlessEqual
è esplicitamente deprecato. assertEquals
porta questo commento :-)
# Sinonimi per i metodi di asserzione
# I plurali sono privi di documenti. Tenerli in questo modo per scoraggiare l'uso.
# Non aggiungere altro. Non rimuovere.
# Passando attraverso un ciclo di deprecazione su questi sarebbe infastidire molte persone.
Quindi, il risultato sembra essere che si dovrebbe usare quello che vuoi per Python 2.x, ma tendono verso assertEqual
per Python 3.
Non trovo alcuna menzione di assertEquals in http://docs.python.org/library/unittest.html. Tuttavia, quando importare TestCase e quindi fare un "aiuto (TestCase)", è elencato. Penso che sia solo un sinonimo di convenienza.
Sì, ma rompe male il "solo un modo ovvio per farlo" mantra :-( –
@alex - Avrai senza argomento da parte mia su questo –
Credo che questo era tensione tra il "solo modo ovvio per farlo "vs" alias per rendere semantico il flusso del codice complessivo ". Personalmente ho trovato mi piace leggere
failIf(some_condition)
oltre
assertFalse(some_condition)
ma piaceva
assertEqual(a, b)
sugli altri due (assertEquals(a, b)
disturba il mio senso della grammatica).
"L'unico modo ovvio per farlo" ha avuto la precedenza in futuro.
A 3.3 update: Da 26.3.7.1.1. Deprecated aliases:
Per ragioni storiche, alcuni dei metodi TestCase avevano uno o più alias che ora sono obsoleti. Nella tabella seguente sono elencati i nomi corretti con i loro pseudonimi deprecate:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Non solo per Python 3.x, dal momento che Python 2.7 assertEquals
è stato deprecato così:.
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
In realtà il commento sui plurali è ambiguo, dice che "i plurali" non sono documentati, la frase finale indica che si intende che questo significhi nomi di metodi che terminano con "s", come "assertEquals". uguale a * è una forma singolare (in terza persona) di un verbo, non un plurale. Penso che tu abbia capito correttamente cosa intendesse il comment-writer, ma la parola "plurale" è sbagliata. – LarsH