บทช่วยสอน PyUnit: Python กรอบการทดสอบหน่วย (พร้อมตัวอย่าง)
การทดสอบหน่วยคืออะไร?
การทดสอบหน่วย in Python ดำเนินการเพื่อระบุข้อบกพร่องตั้งแต่เนิ่นๆ ในขั้นตอนการพัฒนาของแอปพลิเคชัน เมื่อข้อบกพร่องเกิดขึ้นอีกน้อยลงและมีค่าใช้จ่ายในการแก้ไขน้อยลง
การทดสอบหน่วยคือการทดสอบระดับรหัสสคริปต์ที่ออกแบบ Python เพื่อตรวจสอบ "หน่วย" การทำงานขนาดเล็ก การทดสอบหน่วยเป็นเฟรมเวิร์กเชิงวัตถุที่อิงตามฟิกซ์เจอร์ทดสอบ
Python เทคนิคการทดสอบหน่วย
Python การทดสอบหน่วยส่วนใหญ่เกี่ยวข้องกับการทดสอบโมดูลเฉพาะโดยไม่ต้องเข้าถึงโค้ดที่ต้องพึ่งพาใดๆ นักพัฒนาสามารถใช้เทคนิคต่างๆ เช่น stubs และ mocks เพื่อแยกโค้ดออกเป็น “หน่วย” และทำการทดสอบระดับหน่วยกับแต่ละส่วนได้
- การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ TDD: การทดสอบหน่วยควรทำควบคู่ไปกับ Pythonและสำหรับนักพัฒนานั้นใช้วิธีการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ ในวิธี TDD คุณต้องออกแบบก่อน Python การทดสอบหน่วยและจากนั้นคุณจึงเขียนโค้ดที่จะใช้คุณลักษณะนี้ต่อไป
-
ต้นขั้วและเยาะเย้ย: เป็นสองเทคนิคหลักที่จำลองวิธีการปลอมที่กำลังทดสอบ ก ต้นขั้ว ใช้เพื่อกรอกข้อมูลการพึ่งพาที่จำเป็นสำหรับการทดสอบหน่วยเพื่อให้ทำงานได้อย่างถูกต้อง ก เยาะเย้ย ในทางกลับกันเป็นวัตถุปลอมที่ทำการทดสอบที่เรายืนยัน
ความตั้งใจของทั้งสองวิธีเหมือนกันในการกำจัดการทดสอบการขึ้นต่อกันทั้งหมดของคลาสหรือฟังก์ชัน
Python กรอบการทดสอบหน่วย
เพื่อให้กระบวนการทดสอบหน่วยง่ายขึ้นและปรับปรุงคุณภาพของโครงการของคุณ ขอแนะนำให้ Python กรอบการทดสอบหน่วย กรอบการทดสอบหน่วยประกอบด้วย
-
หน่วยไพ: PyUnit รองรับฟิกซ์เจอร์ กรณีทดสอบ ชุดทดสอบ และตัวดำเนินการทดสอบสำหรับการทดสอบโค้ดอัตโนมัติ ใน PyUnit คุณสามารถจัดระเบียบกรณีทดสอบเป็นชุดที่มีการติดตั้งแบบเดียวกันได้
-
จมูก: ปลั๊กอินในตัวของ Nose ช่วยคุณในการจับภาพเอาต์พุต การครอบคลุมโค้ด การทดสอบเอกสาร ฯลฯ ไวยากรณ์ของจมูกค่อนข้างง่ายกว่าและลดอุปสรรคในการเขียนการทดสอบ มันขยายออกไป Python unittest เพื่อให้การทดสอบง่ายขึ้น
- อาจารย์ : สคริปต์การทดสอบ Doctest อยู่ใน docstring พร้อมฟังก์ชันขนาดเล็กที่ด้านล่างของไฟล์ Doctest ช่วยให้คุณสามารถทดสอบโค้ดของคุณโดยการรันตัวอย่างที่รวมอยู่ในเอกสารประกอบ และตรวจสอบว่าตัวอย่างเหล่านั้นส่งคืนผลลัพธ์ที่คาดหวัง กรณีการใช้งานของ doctest มีรายละเอียดน้อยกว่าและไม่รองรับกรณีพิเศษ สิ่งเหล่านี้มีประโยชน์ในฐานะเอกสารประกอบที่ชัดเจนเกี่ยวกับกรณีการใช้งานหลักของโมดูลและส่วนประกอบต่างๆ
การทดสอบหน่วยด้วย PyUnit
พยูนเป็น Python พอร์ตของ JUnit- ในฐานะส่วนหนึ่งของ Pyunit ในโมดูล unittest จะมีคลาสหลักอยู่ห้าคลาส
- คลาส TestCase: คลาส TestCase รองรับขั้นตอนการทดสอบและจัดเตรียมขั้นตอนสำหรับการทำแต่ละขั้นตอนและการทำความสะอาดหลังจากนั้น
- คลาส TestSuite: ทำหน้าที่เป็นคอนเทนเนอร์คอลเลกชัน และสามารถมีวัตถุชุดทดสอบได้หลายรายการและวัตถุชุดทดสอบหลายรายการ
- คลาส TestLoader: คลาสนี้โหลดกรณีทดสอบและชุดที่กำหนดในเครื่องหรือจากไฟล์ภายนอก โดยจะปล่อยออบเจ็กต์ชุดทดสอบที่มีห้องชุดและเคสเหล่านั้นออกมา
- คลาส TextTestRunner: เพื่อดำเนินการทดสอบ จะมีแพลตฟอร์มมาตรฐานสำหรับดำเนินการทดสอบ
- คลาส TestResults: มีภาชนะมาตรฐานสำหรับผลการทดสอบ
การออกแบบกรณีทดสอบสำหรับ Python การทดสอบโดยใช้ PyUnit
การทดสอบหน่วยจัดให้มีคลาสพื้นฐาน กรณีทดสอบ ซึ่งอาจใช้เพื่อสร้างกรณีทดสอบใหม่ สำหรับการออกแบบกรณีทดสอบนั้นมีวิธีการใช้อยู่ 3 ชุด ได้แก่
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
ชุดแรกเป็นตะขอทดสอบก่อนและหลัง วิธีการตั้งค่า () เริ่มต้นก่อนรูทีนการทดสอบแต่ละครั้ง และการแยกส่วน () หลังจากรูทีน
วิธีชุดที่สองควบคุมการดำเนินการทดสอบ ทั้งสองวิธีใช้สตริงข้อความเป็นอินพุต และทั้งสองวิธียกเลิกการทดสอบที่กำลังดำเนินอยู่ แต่เมธอด skiktest() จะยกเลิกการทดสอบปัจจุบัน ในขณะที่เมธอด failed() ล้มเหลวโดยสิ้นเชิง
วิธีสุดท้ายหรือที่สามช่วยในการกำหนดการทดสอบ วิธีการ id() ส่งคืนสตริงที่ประกอบด้วยชื่อของวัตถุ testcase และของรูทีนการทดสอบ และวิธีการสั้นๆDescription() ส่งคืนความคิดเห็น docstr เมื่อเริ่มต้นรูทีนการทดสอบแต่ละอัน
ข้อดีของการใช้ Python การทดสอบหน่วย
- ช่วยให้คุณตรวจจับจุดบกพร่องได้ตั้งแต่เนิ่นๆ ของวงจรการพัฒนา
- ช่วยให้คุณเขียนโปรแกรมได้ดีขึ้น
- สามารถซิงค์กับวิธีการทดสอบและเครื่องมืออื่น ๆ ได้อย่างง่ายดาย
- มันจะมีข้อบกพร่องน้อยลงมาก
- ในอนาคตจะแก้ไขได้ง่ายกว่าโดยมีผลกระทบน้อยมาก