Làm quen với Unittest

Nhập môn Kiểm thử trong Python

Alexander Levin

Data Scientist

Ôn tập OOP

  • OOP - mô hình lập trình dựa trên đối tượng và lớp.
  • Lớp - khuôn mẫu của đối tượng, có thể có phương thức và thuộc tính.
  • Phương thức - hàm/thủ tục thuộc về một lớp.
  • Thuộc tính - biến thuộc về một lớp.
  • Đối tượng - một thể hiện của lớp.
  • Ví dụ lớp Python:
    class Rectangle:
      # Constructor của Rectangle
      def __init__(self, a, b):
          self.a = a
          self.b = b
      # Phương thức tính diện tích
      def get_area(self):
          return self.a * self.b
    # Ví dụ sử dụng
    r = Rectangle(4, 5)
    print(r.get_area())
    
>> 20
Nhập môn Kiểm thử trong Python

Kế thừa trong OOP

  • Lớp có thể kế thừa thuộc tính từ lớp khác.
  • Đặt lớp cha trong ngoặc đơn sau tên lớp mới.
    class RedRectangle(Rectangle):
      self.color = 'red'
    
Nhập môn Kiểm thử trong Python

unittest là gì

  • unittest - khung kiểm thử tự động tích hợp (cài sẵn với Python).
  • unittest - không chỉ cho unit test.
  • Dựa trên OOP: mỗi test case là một lớp, mỗi kiểm thử là một phương thức.
  • Test case - một phiên kiểm thử.
  • Test suite - tập hợp các test case.
Nhập môn Kiểm thử trong Python

unittest vs. pytest

unittest

  • Dựa trên OOP - cần tạo các lớp kiểm thử)
  • Tích hợp (cài sẵn với bản phân phối Python)
  • Nhiều phương thức assert hơn

pytest

  • Dựa trên hàm - tìm script và hàm bắt đầu bằng test_
  • Gói bên thứ ba (cần cài riêng, không đi kèm bản phân phối Python)

  • Ít phương thức assert hơn

Nhập môn Kiểm thử trong Python

Cách tạo kiểm thử với unittest

Kiểm thử toán tử lũy thừa:

import unittest

# Khai báo lớp TestCase
class TestSquared(unittest.TestCase):
    # Định nghĩa bài kiểm thử
    def test_negative(self):
        self.assertEqual((-3) ** 2, 9)
Nhập môn Kiểm thử trong Python

Phương thức assert

  • .assertEqual(), .assertNotEqual()
  • .assertTrue(), .assertFalse()
  • .assertIs(), .assertIsNone()
  • .assertIsInstance(), .assertIn()
  • .assertRaises()
  • Và nhiều phương thức khác
Nhập môn Kiểm thử trong Python

Tóm tắt

  • unittest - khung kiểm thử tự động có sẵn trong Python, dựa trên OOP
  • Test case - một phiên kiểm thử trong unittest
  • Tạo kiểm thử:
    1. Khai báo lớp kế thừa unittest.TestCase
    2. Định nghĩa hàm kiểm thử
  • Các phương thức assert
Nhập môn Kiểm thử trong Python

Ayo berlatih!

Nhập môn Kiểm thử trong Python

Preparing Video For Download...