พบกับ Unittest

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

Alexander Levin

Data Scientist

ทบทวน OOP

  • OOP - รูปแบบการเขียนโปรแกรมที่อิงกับออบเจกต์และคลาส
  • Class - แม่แบบของออบเจกต์ที่สามารถมีเมธอดและแอตทริบิวต์ได้
  • Method - ฟังก์ชันหรือโพรซีเดอร์ที่เป็นส่วนหนึ่งของคลาส
  • Attribute - ตัวแปรที่เป็นส่วนหนึ่งของคลาส
  • Object - อินสแตนซ์ของคลาส
  • ตัวอย่างคลาสใน Python:
    class Rectangle:
      # Constructor of Rectangle
      def __init__(self, a, b):
          self.a = a
          self.b = b
      # Area method
      def get_area(self):
          return self.a * self.b
    # Usage example
    r = Rectangle(4, 5)
    print(r.get_area())
    
>> 20
Python เบื้องต้นสำหรับการทดสอบโค้ด

การสืบทอดใน OOP

  • คลาสสามารถสืบทอดคุณสมบัติจากคลาสอื่นได้
  • ใส่คลาส parent ในวงเล็บหลังชื่อคลาสใหม่
    class RedRectangle(Rectangle):
      self.color = 'red'
    
Python เบื้องต้นสำหรับการทดสอบโค้ด

unittest คืออะไร

  • unittest - เฟรมเวิร์กสำหรับทดสอบอัตโนมัติที่ติดมากับ Python
  • unittest - ใช้ได้ไม่จำกัดแค่การทดสอบระดับยูนิต
  • อิงกับ OOP: แต่ละ test case คือคลาส และแต่ละเทสคือเมธอด
  • Test case - หน่วยการทดสอบหนึ่งหน่วย
  • Test suite - ชุดรวมของ test case
Python เบื้องต้นสำหรับการทดสอบโค้ด

unittest vs. pytest

unittest

  • อิงกับ OOP — ต้องสร้างคลาสสำหรับเทส
  • Built-in (ติดมากับ Python)
  • มี assertion method ให้ใช้มากกว่า

pytest

  • อิงกับฟังก์ชัน — ค้นหาสคริปต์และฟังก์ชันที่ขึ้นต้นด้วย test_
  • แพ็กเกจของบุคคลที่สาม (ต้องติดตั้งแยกจาก Python)

  • มี assertion method น้อยกว่า

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

วิธีสร้างเทสด้วย unittest

ทดสอบตัวดำเนินการยกกำลัง:

import unittest

# Declaring the TestCase class
class TestSquared(unittest.TestCase):
    # Defining the test
    def test_negative(self):
        self.assertEqual((-3) ** 2, 9)
Python เบื้องต้นสำหรับการทดสอบโค้ด

Assertion method

  • .assertEqual(), .assertNotEqual()
  • .assertTrue(), .assertFalse()
  • .assertIs(), .assertIsNone()
  • .assertIsInstance(), .assertIn()
  • .assertRaises()
  • และอื่น ๆ อีกมาก
Python เบื้องต้นสำหรับการทดสอบโค้ด

สรุป

  • unittest - เฟรมเวิร์ก built-in ของ Python แบบ OOP สำหรับทดสอบอัตโนมัติ
  • Test case - หน่วยการทดสอบใน unittest
  • วิธีสร้างเทส:
    1. ประกาศคลาสที่สืบทอดจาก unittest.TestCase
    2. กำหนดฟังก์ชันเทส
  • Assertion method
Python เบื้องต้นสำหรับการทดสอบโค้ด

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

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

Preparing Video For Download...