Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

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


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

การทดสอบหน่วยเป็นการทดสอบซอฟต์แวร์ประเภทหนึ่งที่มีการทดสอบแต่ละองค์ประกอบของระบบ การทดสอบหน่วยถือเป็นแนวทางปฏิบัติที่สำคัญสำหรับนักพัฒนา ช่วยให้มั่นใจได้ว่าทุกองค์ประกอบของซอฟต์แวร์ทำงานอย่างเหมาะสมตามที่คาดไว้ การทดสอบหน่วยดำเนินการโดยนักพัฒนาเป็นหลักในระหว่างขั้นตอนการเข้ารหัสของการพัฒนาซอฟต์แวร์

การทดสอบหน่วยช่วยให้แก้ไขปัญหาได้ง่าย เนื่องจากนักพัฒนาทราบว่าคอมโพเนนต์ใดของระบบหรือซอฟต์แวร์ที่มีปัญหา และนักพัฒนาสามารถแก้ไขหน่วยนั้นได้

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

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

สามารถใช้โมดูล unittest ได้โดยการนำเข้าโมดูลนี้ในโปรแกรม python ดังต่อไปนี้

import unittest

ตัวอย่าง

สมมติว่า เรามีฟังก์ชันง่าย ๆ ซึ่งคำนวณพื้นที่ของสี่เหลี่ยมจัตุรัส ให้ไฟล์นี้ถูกบันทึกด้วยชื่อ 'area.py'

def area(a):
   return (a+a)

ตอนนี้ มาเขียนโค้ดทดสอบหน่วยสำหรับฟังก์ชันด้านบนกัน ซึ่งจะแจ้งให้เราทราบว่าฟังก์ชันของเราให้ผลลัพธ์ที่คาดไว้หรือไม่ ให้บันทึกไฟล์รหัสการทดสอบหน่วยโดยใช้ชื่อ “unit_test.py”

unit_test.py &mnu;

from area import *
import unittest

class Testarea(unittest.TestCase):
   def test_area(self):
      self.assertAlmostEqual(area(5),25)
      self.assertAlmostEqual(area(3),9)
      self.assertAlmostEqual(area(4),16)

ที่นี่ ไฟล์ที่มีรหัสที่จะทดสอบจะถูกนำเข้า เมธอด unittest assertAlmostEqual() ถูกนำมาใช้. สิ่งนี้เรียกฟังก์ชันพื้นที่ด้วยอินพุตบางส่วน และพารามิเตอร์ที่สองมีเอาต์พุตที่คาดว่าจะส่งคืนโดยฟังก์ชัน หากผลลัพธ์ที่ส่งคืนโดยพื้นที่ () เท่ากับผลลัพธ์ที่คาดไว้ การทดสอบจะผ่าน ไม่เช่นนั้นจะล้มเหลว

ตอนนี้ ให้เรียกใช้ unit_test.py จากพรอมต์คำสั่งเพื่อตรวจสอบว่าโค้ดพื้นที่ () ของเราผ่านการทดสอบหรือไม่

ดำเนินการคำสั่งต่อไปนี้จากพรอมต์คำสั่งเพื่อเรียกใช้ไฟล์ unit_test

python -m unittest unit_test.py

ผลลัพธ์

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
F
======================================================================
FAIL: test_area (unit_test.Testarea)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Users\Inderjit Singh\Desktop\unit_test.py", line 7, in test_area
      self.assertAlmostEqual(area(5),25)
AssertionError: 10 != 25 within 7 places (15 difference)

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

รหัสของเราล้มเหลวในการทดสอบหน่วย สาเหตุจะได้รับในการติดตามกลับ ฟังก์ชันแรก self.assertAlmostEqual(area(5),25) ทำให้โค้ดของเราล้มเหลว เนื่องจากฟังก์ชันส่งคืน 10 แต่ผลลัพธ์ที่คาดไว้คือ 25

เนื่องจากเป็นฟังก์ชันที่ใช้งานง่าย เราจึงทราบวิธีแก้ปัญหานี้ รหัสพื้นที่ () ของเราไม่ถูกต้อง มันควรจะส่งคืน (a*a) แทนที่จะเป็น (a+a)

มาแก้ไขรหัสพื้นที่ () และทำการทดสอบหน่วยใหม่อีกครั้ง

def area(a):
   return (a*a)

เรียกใช้ unit_test.py อีกครั้ง

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

ตอนนี้ เนื่องจากเราได้แก้ไขโค้ดในพื้นที่ () แล้ว มันจึงทำงานสำเร็จโดยมีสถานะตกลง เพื่อให้แน่ใจว่าโค้ดของเราทำงานได้อย่างสมบูรณ์กับทุกกรณีที่ระบุไว้ในไฟล์ unit_test.py

นี่เป็นแนวคิดง่ายๆ ในการให้แนวคิดเกี่ยวกับการทดสอบหน่วย มีฟังก์ชันอื่นๆ มากมายในโมดูล unittest ซึ่งใช้ในการทดสอบหน่วยในกระบวนการพัฒนา