Gibt es einen Unterschied zwischen assertEquals
und assertEqual
in der Python unittest.TestCase
?
Und wenn nicht, warum gibt es zwei Funktionen? Nur zur Vereinfachung?
quelle
Gibt es einen Unterschied zwischen assertEquals
und assertEqual
in der Python unittest.TestCase
?
Und wenn nicht, warum gibt es zwei Funktionen? Nur zur Vereinfachung?
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 .
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.A 3.3 Update: Ab 26.3.7.1.1. Veraltete Aliase :
quelle
Nicht nur für Python 3.x, da Python 2.7
assertEquals
ebenfalls veraltet ist:Ab 25.3.7.1.1. Veraltete Aliase
quelle
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
Über
aber mochte
ü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.
quelle
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.
quelle
Ich weiß, dass es die spezifische Frage nicht beantwortet, aber wenn Sie bei der Suche hierher gekommen sind:
Sie müssen nur den Aufruf in .assertEqual () ändern (entfernen Sie das 's' in gleich)
quelle
Es ist fast dasselbe, außer dass assertEquals wiederholt wird. Es wird empfohlen, assertEqual wie hier zu verwenden:
Online-Quelle: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
quelle