บทช่วยสอน PyUnit: Python กรอบการทดสอบหน่วย (พร้อมตัวอย่าง)

การทดสอบหน่วยคืออะไร?

การทดสอบหน่วย in Python ดำเนินการเพื่อระบุข้อบกพร่องตั้งแต่เนิ่นๆ ในขั้นตอนการพัฒนาของแอปพลิเคชัน เมื่อข้อบกพร่องเกิดขึ้นอีกน้อยลงและมีค่าใช้จ่ายในการแก้ไขน้อยลง

การทดสอบหน่วยคือการทดสอบระดับรหัสสคริปต์ที่ออกแบบ Python เพื่อตรวจสอบ "หน่วย" การทำงานขนาดเล็ก การทดสอบหน่วยเป็นเฟรมเวิร์กเชิงวัตถุที่อิงตามฟิกซ์เจอร์ทดสอบ

Python เทคนิคการทดสอบหน่วย

Python การทดสอบหน่วยส่วนใหญ่เกี่ยวข้องกับการทดสอบโมดูลเฉพาะโดยไม่ต้องเข้าถึงโค้ดที่ต้องพึ่งพาใดๆ นักพัฒนาสามารถใช้เทคนิคต่างๆ เช่น stubs และ mocks เพื่อแยกโค้ดออกเป็น “หน่วย” และทำการทดสอบระดับหน่วยกับแต่ละส่วนได้

  • การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ TDD: การทดสอบหน่วยควรทำควบคู่ไปกับ Pythonและสำหรับนักพัฒนานั้นใช้วิธีการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ ในวิธี TDD คุณต้องออกแบบก่อน Python การทดสอบหน่วยและจากนั้นคุณจึงเขียนโค้ดที่จะใช้คุณลักษณะนี้ต่อไป
  • ต้นขั้วและเยาะเย้ย: เป็นสองเทคนิคหลักที่จำลองวิธีการปลอมที่กำลังทดสอบ ก ต้นขั้ว ใช้เพื่อกรอกข้อมูลการพึ่งพาที่จำเป็นสำหรับการทดสอบหน่วยเพื่อให้ทำงานได้อย่างถูกต้อง ก เยาะเย้ย ในทางกลับกันเป็นวัตถุปลอมที่ทำการทดสอบที่เรายืนยัน

    ความตั้งใจของทั้งสองวิธีเหมือนกันในการกำจัดการทดสอบการขึ้นต่อกันทั้งหมดของคลาสหรือฟังก์ชัน

Python กรอบการทดสอบหน่วย

เพื่อให้กระบวนการทดสอบหน่วยง่ายขึ้นและปรับปรุงคุณภาพของโครงการของคุณ ขอแนะนำให้ Python กรอบการทดสอบหน่วย กรอบการทดสอบหน่วยประกอบด้วย

Python เทคนิคการทดสอบหน่วย

  • หน่วยไพ: PyUnit รองรับฟิกซ์เจอร์ กรณีทดสอบ ชุดทดสอบ และตัวดำเนินการทดสอบสำหรับการทดสอบโค้ดอัตโนมัติ ใน PyUnit คุณสามารถจัดระเบียบกรณีทดสอบเป็นชุดที่มีการติดตั้งแบบเดียวกันได้
  • จมูก: ปลั๊กอินในตัวของ Nose ช่วยคุณในการจับภาพเอาต์พุต การครอบคลุมโค้ด การทดสอบเอกสาร ฯลฯ ไวยากรณ์ของจมูกค่อนข้างง่ายกว่าและลดอุปสรรคในการเขียนการทดสอบ มันขยายออกไป Python unittest เพื่อให้การทดสอบง่ายขึ้น
  • อาจารย์ : สคริปต์การทดสอบ Doctest อยู่ใน docstring พร้อมฟังก์ชันขนาดเล็กที่ด้านล่างของไฟล์ Doctest ช่วยให้คุณสามารถทดสอบโค้ดของคุณโดยการรันตัวอย่างที่รวมอยู่ในเอกสารประกอบ และตรวจสอบว่าตัวอย่างเหล่านั้นส่งคืนผลลัพธ์ที่คาดหวัง กรณีการใช้งานของ doctest มีรายละเอียดน้อยกว่าและไม่รองรับกรณีพิเศษ สิ่งเหล่านี้มีประโยชน์ในฐานะเอกสารประกอบที่ชัดเจนเกี่ยวกับกรณีการใช้งานหลักของโมดูลและส่วนประกอบต่างๆ

การทดสอบหน่วยด้วย PyUnit

พยูนเป็น Python พอร์ตของ JUnit- ในฐานะส่วนหนึ่งของ Pyunit ในโมดูล unittest จะมีคลาสหลักอยู่ห้าคลาส

การทดสอบหน่วยด้วย PyUnit

  • คลาส TestCase: คลาส TestCase รองรับขั้นตอนการทดสอบและจัดเตรียมขั้นตอนสำหรับการทำแต่ละขั้นตอนและการทำความสะอาดหลังจากนั้น
  • คลาส TestSuite: ทำหน้าที่เป็นคอนเทนเนอร์คอลเลกชัน และสามารถมีวัตถุชุดทดสอบได้หลายรายการและวัตถุชุดทดสอบหลายรายการ
  • คลาส TestLoader: คลาสนี้โหลดกรณีทดสอบและชุดที่กำหนดในเครื่องหรือจากไฟล์ภายนอก โดยจะปล่อยออบเจ็กต์ชุดทดสอบที่มีห้องชุดและเคสเหล่านั้นออกมา
  • คลาส TextTestRunner: เพื่อดำเนินการทดสอบ จะมีแพลตฟอร์มมาตรฐานสำหรับดำเนินการทดสอบ
  • คลาส TestResults: มีภาชนะมาตรฐานสำหรับผลการทดสอบ

การออกแบบกรณีทดสอบสำหรับ Python การทดสอบโดยใช้ PyUnit

การทดสอบหน่วยจัดให้มีคลาสพื้นฐาน กรณีทดสอบ ซึ่งอาจใช้เพื่อสร้างกรณีทดสอบใหม่ สำหรับการออกแบบกรณีทดสอบนั้นมีวิธีการใช้อยู่ 3 ชุด ได้แก่

การออกแบบกรณีทดสอบสำหรับ Python

unittest.TestCase

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

ชุดแรกเป็นตะขอทดสอบก่อนและหลัง วิธีการตั้งค่า () เริ่มต้นก่อนรูทีนการทดสอบแต่ละครั้ง และการแยกส่วน () หลังจากรูทีน

วิธีชุดที่สองควบคุมการดำเนินการทดสอบ ทั้งสองวิธีใช้สตริงข้อความเป็นอินพุต และทั้งสองวิธียกเลิกการทดสอบที่กำลังดำเนินอยู่ แต่เมธอด skiktest() จะยกเลิกการทดสอบปัจจุบัน ในขณะที่เมธอด failed() ล้มเหลวโดยสิ้นเชิง

วิธีสุดท้ายหรือที่สามช่วยในการกำหนดการทดสอบ วิธีการ id() ส่งคืนสตริงที่ประกอบด้วยชื่อของวัตถุ testcase และของรูทีนการทดสอบ และวิธีการสั้นๆDescription() ส่งคืนความคิดเห็น docstr เมื่อเริ่มต้นรูทีนการทดสอบแต่ละอัน

ข้อดีของการใช้ Python การทดสอบหน่วย

  • ช่วยให้คุณตรวจจับจุดบกพร่องได้ตั้งแต่เนิ่นๆ ของวงจรการพัฒนา
  • ช่วยให้คุณเขียนโปรแกรมได้ดีขึ้น
  • สามารถซิงค์กับวิธีการทดสอบและเครื่องมืออื่น ๆ ได้อย่างง่ายดาย
  • มันจะมีข้อบกพร่องน้อยลงมาก
  • ในอนาคตจะแก้ไขได้ง่ายกว่าโดยมีผลกระทบน้อยมาก