มีความแตกต่างระหว่างassertEquals
และassertEqual
ในหลามunittest.TestCase
หรือไม่
และถ้าไม่มีทำไมถึงมีสองฟังก์ชั่น? เพื่อความสะดวกเท่านั้น?
มีความแตกต่างระหว่างassertEquals
และassertEqual
ในหลามunittest.TestCase
หรือไม่
และถ้าไม่มีทำไมถึงมีสองฟังก์ชั่น? เพื่อความสะดวกเท่านั้น?
คำตอบ:
คำถามที่ดี!
อันที่จริงในหลาม 2.6 ทั้งสองassertEqual
และมีความสะดวกสบายให้กับนามแฝงassertEquals
failUnlessEqual
แหล่งที่มาประกาศพวกเขาดังนี้:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
ในPython 3จนถึงจุดของคุณfailUnlessEqual
จะถูกคัดค้านอย่างชัดเจน assertEquals
ดำเนินการแสดงความคิดเห็นนี้ :-)
# คำพ้องสำหรับวิธีการยืนยัน
# พหูพจน์ไม่มีเอกสาร ให้พวกเขามีวิธีที่จะกีดกันการใช้งาน
# อย่าเพิ่มมากขึ้น อย่าลบ
# จะผ่านรอบคัดค้านเหล่านี้จะรบกวนคนจำนวนมาก
ดังนั้นผลที่สุดก็คือคุณควรใช้สิ่งที่คุณต้องการสำหรับ Python 2.x แต่มีแนวโน้มที่จะassertEqual
เป็น Python 3
การอัปเดต 3.3: จาก26.3.7.1.1 นามแฝงที่คัดค้าน :
ด้วยเหตุผลทางประวัติศาสตร์เมธอด TestCase บางวิธีมีนามแฝงอย่างน้อยหนึ่งชื่อที่เลิกใช้แล้ว ตารางต่อไปนี้แสดงชื่อที่ถูกต้องพร้อมกับชื่อแทนที่ไม่สนับสนุน:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
ไม่ใช่แค่สำหรับ Python 3.x เท่านั้นเนื่องจาก Python 2.7 assertEquals
ได้ถูกคัดค้านเช่นกัน:
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
ฉันคิดว่านี่เป็นความตึงเครียดระหว่าง "วิธีเดียวที่ชัดเจนในการทำ" กับ "นามแฝง" เพื่อให้การไหลของรหัสโดยรวมมีความหมาย " โดยส่วนตัวฉันพบว่าฉันชอบอ่าน
failIf(some_condition)
เกิน
assertFalse(some_condition)
แต่ชอบ
assertEqual(a, b)
เหนืออีกสอง (assertEquals(a, b)
รบกวนจิตใจของฉันไวยากรณ์)
"วิธีที่ชัดเจนเพียงวิธีเดียวเท่านั้นที่จะทำได้" มีความสำคัญมากกว่านี้ในอนาคต
ฉันไม่พบการกล่าวถึง assertEquals ใด ๆ ในhttp://docs.python.org/library/unittest.html อย่างไรก็ตามเมื่อฉันนำเข้า TestCase จากนั้นทำ "ความช่วยเหลือ (TestCase)" มันแสดงอยู่ ฉันคิดว่ามันเป็นเพียงคำพ้องเพื่อความสะดวก
ฉันรู้ว่ามันไม่ได้ตอบคำถามเฉพาะ แต่ถ้าคุณมาที่นี่ในขณะที่ค้นหา:
using deprecated method assertEquals()
คุณเพียงแค่ต้องเปลี่ยนการโทรเป็น. assertEqual () (ลบ 's' ในเท่ากับ S)
มันเกือบจะเหมือนกันยกเว้น assertEquals นั้นมีการทำซ้ำ ขอแนะนำให้ใช้ assertEqual ดังที่นี่:
# 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
แหล่งข้อมูลออนไลน์: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib/lib2to3/fixes/fix_asserts.py
assertEquals
เช่น กระนั้นไวยากรณ์ก็เท่ากับคำกริยาเอกพจน์ (คนที่ 3) ไม่ใช่คำพหูพจน์ ฉันคิดว่าคุณเข้าใจถูกต้องว่าผู้เขียนความคิดเห็นหมายถึงอะไร แต่คำว่า 'พหูพจน์' นั้นผิดพลาด