ฉันมีคลาสที่แสดงถึงสถานะที่ซับซ้อน สถานะนั้นสามารถเปลี่ยนแปลงได้ และฉันก็มีอีกตัวอย่างหนึ่งของคลาสนั้นที่แสดงถึงสถานะ "จริง" ฉันเขียนฟังก์ชันที่ใช้ตรรกะที่แตกต่างกันและค้นหาวิธีทำให้สถานะปัจจุบันเป็นสถานะจริงหากต่างกัน
ฉันต้องการทดสอบฟังก์ชันนั้นโดยใช้ pytest
มีหลายสถานการณ์ที่เป็นไปได้ แต่ตรรกะการทดสอบค่อนข้างง่ายและสรุปไปที่ (โค้ด pseudo python):
def test_diffing(current_state, prescribed_state):
properties_to_add = []
properties_to_delete = []
properties_to_modify = []
properties_to_add, properties_to_delete, properties_to_modify = diff_logic(current_state, prescribed_state)
assert properties_to_add == 1
assert properties_to_delete == 0
assert properties_to_modify == 3
ตัวเลขทางด้านขวามือของการยืนยันจะขึ้นอยู่กับว่า current_state
คืออะไร ฉันมีสถานการณ์ current_state
มากมาย
วิธีที่ดีที่สุดในการเขียนการทดสอบหน่วยเดียวข้างต้นคืออะไร โดยมีฟิกซ์เจอร์หลายคู่ที่ current_state ถูกส่งไปพร้อมกับค่าที่คาดหวังของการยืนยัน
ฉันได้ดูการกำหนดค่าพารามิเตอร์ของ pytest แล้ว แต่ปัญหาของแนวทางนี้คือมันใช้ตัวตกแต่งและมันก็น่าเกลียด* เร็วมาก โดยเฉพาะอย่างยิ่งเมื่อมีการโต้แย้งจำนวนมากและกรณีทดสอบจำนวนมาก ดูเหมือนว่านี่ไม่ใช่สิ่งที่ฉันควรใช้อุปกรณ์ติดตั้ง
อะไรคือวิธีที่ดีที่สุดในการบรรลุสิ่งที่ฉันพยายามทำอย่างหมดจด?
*ฉันกำลังบอกว่ามันดูน่าเกลียดเนื่องจากการโต้แย้งกับมัณฑนากร 15 หรือ 20 ชุดนั้นทำให้เกิดความสับสนอย่างมาก และต้องใช้ตรรกะอย่างมากในตัวมัณฑนากรเอง