Unit testing ด้วย pytest

Python เบื้องต้นสำหรับการทดสอบโค้ด

Alexander Levin

Data Scientist

Unit test คืออะไร

Unit - ส่วนที่เล็กที่สุดของโปรแกรมที่สามารถทดสอบได้

  • ตัวอย่าง: ฟังก์ชัน, เมธอด, คลาส, โมดูล ฯลฯ

$$

Unit testing - วิธีการทดสอบซอฟต์แวร์

  • ช่วยตรวจสอบความถูกต้องของ unit

$$

Test case - ชุดข้อมูลนำเข้าและผลลัพธ์ที่คาดหวังของ unit

  • สรุปพฤติกรรมของโค้ดในแต่ละกรณี
Python เบื้องต้นสำหรับการทดสอบโค้ด

ทำไมต้องใช้ unit tests

Unit tests - เป็นรากฐานของการทดสอบ "ภาพรวม" ของซอฟต์แวร์

กรณีที่ควรใช้:

  • เมื่อพบบั๊ก
  • ระหว่างการพัฒนา
  • หลังจากมีการเปลี่ยนแปลงโค้ด
Python เบื้องต้นสำหรับการทดสอบโค้ด

วิธีสร้าง unit test

ขั้นตอน:

  1. เลือก unit ที่จะทดสอบ
  2. กำหนด test cases (ส่วนที่ต้องใช้ความคิดสร้างสรรค์):
    • "unit นี้มีผลลัพธ์เป็นไปได้อะไรบ้าง"
    • "จะใช้งาน unit นี้ได้อย่างไร"
    • "unit ควรทำงานอย่างไรในแต่ละกรณี"
  3. เขียนโค้ดสำหรับแต่ละ test case
  4. รันการทดสอบ และวิเคราะห์ผลลัพธ์
Python เบื้องต้นสำหรับการทดสอบโค้ด

ตัวอย่างการสร้าง unit test

Unit ที่จะทดสอบ:

# Function for a sum of elements
def sum_of_arr(array:list) -> int:
    return sum(array)

Test cases:

  1. ข้อมูลนำเข้าเป็นลิสต์ตัวเลข (ตามปกติ) - ควรคืนค่า sum
  2. ข้อมูลนำเข้าเป็นลิสต์ว่าง - ควรคืนค่า 0
  3. ข้อมูลนำเข้าเป็นลิสต์ที่มีตัวเลขหนึ่งตัว - ควรคืนค่า number นั้น
Python เบื้องต้นสำหรับการทดสอบโค้ด

โค้ดสำหรับ unit test

# Test Case 1: regular array
def test_regular():
    assert sum_of_arr([1, 2, 3]) == 6
    assert sum_of_arr([100, 150]) == 250
# Test Case 2: empty list
def test_empty():
    assert sum_of_arr([]) == 0
# Test Case 3: one number
def test_one_number():
    assert sum_of_arr([10]) == 10
    assert sum_of_arr([0]) == 0
Python เบื้องต้นสำหรับการทดสอบโค้ด

สรุป

Unit test - การทดสอบที่ตรวจสอบว่า unit ทำงานได้ถูกต้องตามที่คาดไว้

Test case - ข้อมูลนำเข้าและผลลัพธ์ที่สรุปพฤติกรรมของโค้ดในแต่ละกรณี

กรณีที่ควรใช้:

  • เมื่อพบบั๊ก
  • ระหว่างการพัฒนา
  • หลังจากมีการเปลี่ยนแปลงโค้ด

การกำหนด test cases - ต้องอาศัยความคิดสร้างสรรค์

Python เบื้องต้นสำหรับการทดสอบโค้ด

มาฝึกกันเถอะ!

Python เบื้องต้นสำหรับการทดสอบโค้ด

Preparing Video For Download...