Odpowiedzi:
Dobre pytanie!
Faktycznie, w Pythonie 2.6, zarówno assertEqual
i assertEquals
są aliasy wygodę failUnlessEqual
. Źródło deklaruje je w ten sposób:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
W Pythonie 3 , do tego stopnia, failUnlessEqual
jest wyraźnie przestarzałe. assertEquals
przenosi ten komentarz :-)
# Synonimy dla metod asercji
# Liczba mnoga jest nieudokumentowana. Trzymaj je w ten sposób, aby zniechęcić do korzystania.
# Nie dodawaj więcej. Nie usuwać.
# Przechodzenie przez cykl amortyzacji na nich denerwuje wiele osób.
Wydaje się więc, że powinieneś używać, co chcesz w Pythonie 2.x, ale dążyć do assertEqual
Pythona 3.
Aktualizacja 3.3: Od 26.3.7.1.1. Przestarzałe aliasy :
Ze względów historycznych niektóre metody TestCase miały jeden lub więcej aliasów, które są już nieaktualne. W poniższej tabeli wymieniono prawidłowe nazwy wraz z nieaktualnymi aliasami:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Nie tylko dla Python 3.x, ponieważ Python 2.7 assertEquals
również jest przestarzały:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Myślę, że to napięcie między „jedynym oczywistym sposobem na zrobienie tego” a „aliasem, aby cały kod płynął semantycznie”. Osobiście uważam, że lubię czytać
failIf(some_condition)
nad
assertFalse(some_condition)
ale lubiłem
assertEqual(a, b)
nad pozostałymi dwoma ( assertEquals(a, b)
przeszkadza mi poczucie gramatyki).
„Tylko jeden oczywisty sposób na zrobienie tego” ma pierwszeństwo w przyszłości.
Nie znalazłem żadnej wzmianki o assertEquals w http://docs.python.org/library/unittest.html . Jednak po zaimportowaniu TestCase, a następnie „pomocy (TestCase)”, jest na liście. Myślę, że to tylko synonim wygody.
Jest prawie tak samo, z wyjątkiem tego, że assertEquals jest powtórzone. Zalecane jest użycie assertEqual jak tutaj:
# 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
Źródło online: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Jednak gramatycznie równość jest formą czasownika w liczbie pojedynczej (3 osoby), a nie w liczbie mnogiej. Myślę, że dobrze zrozumiałeś, co miał na myśli komentator, ale słowo „liczba mnoga” jest błędne.