Antworten:
Gute Frage!
Tatsächlich sind in Python 2.6 beide assertEqual
und assertEquals
Convenience-Aliase zu failUnlessEqual
. Die Quelle erklärt sie folgendermaßen:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
In Python 3 ist dies bis zu Ihrem Punkt failUnlessEqual
ausdrücklich veraltet. assertEquals
trägt diesen Kommentar :-)
# Synonyme für Assertionsmethoden
# Die Pluralformen sind nicht dokumentiert. Halten Sie sie so, um die Verwendung zu verhindern.
# Fügen Sie nicht mehr hinzu. Nicht entfernen.
# Ein Abwertungszyklus würde viele Menschen ärgern.
Das Ergebnis scheint also zu sein, dass Sie für Python 2.x alles verwenden sollten, was Sie möchten, aber assertEqual
für Python 3 tendieren .
A 3.3 Update: Ab 26.3.7.1.1. Veraltete Aliase :
Aus historischen Gründen hatten einige der TestCase-Methoden einen oder mehrere Aliase, die jetzt veraltet sind. In der folgenden Tabelle sind die korrekten Namen mit ihren veralteten Aliasnamen aufgeführt:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Nicht nur für Python 3.x, da Python 2.7 assertEquals
ebenfalls veraltet ist:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Ich denke, dies war eine Spannung zwischen dem "einzigen offensichtlichen Weg, dies zu tun" und dem "Alias, um den gesamten Code semantisch fließen zu lassen". Persönlich fand ich, dass ich gerne lese
failIf(some_condition)
Über
assertFalse(some_condition)
aber mochte
assertEqual(a, b)
über die anderen beiden ( assertEquals(a, b)
stört meinen Sinn für Grammatik).
Der "einzige offensichtliche Weg, dies zu tun" hat in Zukunft Vorrang.
Ich finde keine Erwähnung von assertEquals in http://docs.python.org/library/unittest.html . Wenn ich jedoch TestCase importiere und dann eine "Hilfe (TestCase)" ausführe, wird diese aufgelistet. Ich denke, es ist nur ein Synonym für Bequemlichkeit.
Es ist fast dasselbe, außer dass assertEquals wiederholt wird. Es wird empfohlen, assertEqual wie hier zu verwenden:
# 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
Online-Quelle: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Grammatisch gesehen ist equals jedoch eine Singularform (3. Person) eines Verbs, kein Plural. Ich denke, Sie haben richtig verstanden, was der Kommentator meinte, aber das Wort "Plural" ist falsch.