เพื่อให้เป็นตัวอย่างที่ได้รับการประดิษฐ์ขึ้นมาสมมติว่าฉันต้องการทดสอบว่าฟังก์ชันคืนค่าตัวเลขสองค่าและค่าแรกมีค่าน้อยกว่าค่าที่สอง:
def test_length():
result = my_function()
assert len(result) == 2
def test_order()
a, b = my_function()
assert a < b
ที่นี่ถ้าtest_length
ล้มเหลวก็test_order
จะล้มเหลวเช่นกัน มันเป็นวิธีปฏิบัติที่ดีที่สุดในการเขียนtest_length
หรือข้ามมัน?
แก้ไข: โปรดทราบว่าในสถานการณ์นี้การทดสอบทั้งสองส่วนใหญ่เป็นอิสระจากกันการทดสอบแต่ละครั้งสามารถแยกออกจากกันหรืออาจทำงานในลำดับกลับกันสิ่งนี้ไม่สำคัญ ดังนั้นไม่มีคำถามเก่า ๆ เหล่านี้เลย
- ฉันจะทดสอบการทำงานของฟังก์ชั่นที่ใช้ฟังก์ชั่นอื่น ๆ ในนั้นได้อย่างไร?
- ฉันจำเป็นต้องมีการทดสอบหน่วยหรือไม่ถ้าฉันมีการทดสอบการรวมระบบอยู่แล้ว?
- วิธีจัดโครงสร้างการทดสอบโดยที่การทดสอบครั้งหนึ่งเป็นการตั้งค่าการทดสอบอื่น?
- วิธีจัดการการพึ่งพาความสำเร็จระหว่างการทดสอบหน่วย
เป็นคู่ที่ซ้ำกันของข้างต้น
A
โทรB
และส่งกลับผลลัพธ์เดียวกันคุณควรทดสอบทั้งสองA
และB
" นี่เป็นเรื่องเกี่ยวกับการทดสอบที่ซ้อนทับมากกว่าฟังก์ชั่นที่อยู่ภายใต้การทดสอบ (แม้ว่าจะสับสนตามชื่อปัจจุบัน)
lambda: type('', (), {'__len__': lambda self: 2})()
จะผ่านครั้งแรก แต่ไม่ใช่ครั้งที่สอง