Câu trả lời:
Câu hỏi hay!
Trên thực tế, trong Python 2.6, cả hai assertEqual
và assertEquals
đều là bí danh tiện lợi failUnlessEqual
. Nguồn khai báo chúng như vậy:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Trong Python 3 , theo quan điểm của bạn, failUnlessEqual
rõ ràng không được chấp nhận. assertEquals
mang bình luận này :-)
# Từ đồng nghĩa với phương pháp khẳng định
# Số nhiều là không có giấy tờ. Giữ chúng theo cách đó để ngăn cản sử dụng.
# Không thêm nhiều hơn. Đừng loại bỏ.
# Trải qua một chu kỳ phản đối về những điều này sẽ gây khó chịu cho nhiều người.
Vì vậy, kết quả cuối cùng có vẻ là bạn nên sử dụng bất cứ thứ gì bạn thích cho Python 2.x, nhưng có xu hướng về assertEqual
Python 3.
Bản cập nhật 3.3: Từ 26.3.7.1.1. Bí danh không dùng nữa :
Vì lý do lịch sử, một số phương thức TestCase có một hoặc nhiều bí danh hiện không được chấp nhận. Bảng sau liệt kê các tên chính xác cùng với các bí danh không dùng nữa:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
Không chỉ dành cho Python 3.x, vì Python 2.7 assertEquals
cũng không được dùng nữa:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
Tôi nghĩ rằng đây là sự căng thẳng giữa "chỉ một cách rõ ràng để làm điều đó" so với "bí danh để làm cho mã tổng thể chảy theo ngữ nghĩa". Cá nhân tôi thấy tôi thích đọc
failIf(some_condition)
kết thúc
assertFalse(some_condition)
nhưng thích
assertEqual(a, b)
hơn hai cái còn lại ( assertEquals(a, b)
làm phiền ý thức ngữ pháp của tôi).
"Chỉ có một cách rõ ràng để làm điều đó" đã được ưu tiên trong tương lai.
Tôi không tìm thấy bất kỳ đề cập nào về assertEquals trong http://docs.python.org/l Library / unittest.html . Tuy nhiên, khi tôi nhập TestCase và sau đó thực hiện "trợ giúp (TestCase)", nó được liệt kê. Tôi nghĩ rằng đó chỉ là một từ đồng nghĩa cho thuận tiện.
Nó gần như giống nhau ngoại trừ assertEquals bị giới hạn. Bạn nên sử dụng assertEqual như ở đây:
# 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
Nguồn trực tuyến: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py
assertEquals
. Tuy nhiên, về mặt ngữ pháp, bằng là một dạng số ít (ngôi thứ 3) của một động từ, không phải là số nhiều. Tôi nghĩ bạn đã hiểu chính xác ý nghĩa của người viết bình luận, nhưng từ "số nhiều" bị nhầm lẫn.