Jawaban:
Pertanyaan bagus!
Sebenarnya, di Python 2.6, baik assertEqual
dan assertEquals
yang kenyamanan alias untuk failUnlessEqual
. Sumber menyatakan demikian:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Dalam Python 3 , ke titik Anda, failUnlessEqual
secara eksplisit ditinggalkan. assertEquals
membawa komentar ini :-)
# Sinonim untuk metode pernyataan
# Bentuk jamaknya tidak berdokumen. Buat mereka seperti itu untuk mencegah penggunaan.
# Jangan menambahkan lebih banyak. Jangan hapus.
# Mengalami siklus penghentian ini akan mengganggu banyak orang.
Jadi, hasilnya adalah Anda harus menggunakan apa pun yang Anda suka untuk Python 2.x, tetapi cenderung ke arah assertEqual
untuk Python 3.
Pembaruan 3.3: Dari 26.3.7.1.1. Alias yang ditinggalkan :
Untuk alasan historis, beberapa metode TestCase memiliki satu atau lebih alias yang sekarang tidak digunakan lagi. Tabel berikut mencantumkan nama yang benar bersama dengan alias yang sudah usang:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Bukan hanya untuk Python 3.x, karena Python 2.7 assertEquals
telah usang juga:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Saya pikir ini adalah ketegangan antara "hanya satu cara yang jelas untuk melakukannya" vs. "alias untuk membuat aliran kode keseluruhan secara semantik". Secara pribadi saya menemukan saya suka membaca
failIf(some_condition)
lebih
assertFalse(some_condition)
tapi suka
assertEqual(a, b)
atas dua lainnya ( assertEquals(a, b)
mengganggu rasa tata bahasa saya).
"Satu-satunya cara yang jelas untuk melakukannya" lebih diutamakan.
Saya tidak menemukan penyebutan assertEquals di http://docs.python.org/library/unittest.html . Namun, ketika saya mengimpor TestCase dan kemudian melakukan "bantuan (TestCase)", itu terdaftar. Saya pikir itu hanya sinonim untuk kenyamanan.
Ini hampir sama kecuali bahwa assertEquals di repricated. Dianjurkan untuk menggunakan assertEqual seperti di sini:
# 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
Sumber daring: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Namun secara tata bahasa, equal adalah bentuk tunggal (orang ketiga) dari kata kerja, bukan jamak. Saya pikir Anda mengerti dengan benar apa yang dimaksud dengan komentar-penulis, tetapi kata 'jamak' salah.