Unit Testing và Test-Driven Development (TDD) – những khái niệm cốt lõi trong CI/CD pipelines. Nhưng làm thế nào để triển khai thực tế trong Python?
🧪 Unit Testing với Python
Mục tiêu: Xác nhận mỗi unit hoạt động đúng trước khi ghép chúng lại thành hệ thống lớn.
🚀 Test-Driven Development (TDD)
Quy trình TDD thường theo vòng lặp Red → Green → Refactor:
👉 Ví dụ minh họa:
# test_math.py import pytest from math_utils import add def test_add_numbers(): assert add(2, 3) == 5
Ban đầu chưa có hàm add(), test chắc chắn fail.
Tiếp theo, ta viết code:
# math_utils.py def add(a, b): return a + b
Chạy lại test → pass ✅
Vòng lặp tiếp tục cho các function khác.
⚙️ CI/CD & Unit Test
Khi toàn bộ test pass → code được merge → build artifact → triển khai sang staging/UAT.
📌 Nội dung kiểm tra nhanh
Câu hỏi: Which option is not a benefit of using CI?
👉 Đáp án: merge difficulties (CI giúp giảm khó khăn khi merge, chứ không tạo thêm).
🧪 Unit Testing với Python
- Unit Test = kiểm thử từng thành phần nhỏ (function, method) của code.
- Trong Python, hai framework phổ biến nhất là:
- unittest (có sẵn trong standard library).
- pytest (mạnh mẽ, cú pháp gọn, cộng đồng lớn).
Mục tiêu: Xác nhận mỗi unit hoạt động đúng trước khi ghép chúng lại thành hệ thống lớn.
🚀 Test-Driven Development (TDD)
Quy trình TDD thường theo vòng lặp Red → Green → Refactor:
- Viết test trước (ban đầu sẽ fail, vì chưa có code).
- Viết code tối thiểu để pass test.
- Refactor code để gọn gàng, tránh trùng lặp, nhưng vẫn pass test.
👉 Ví dụ minh họa:
# test_math.py import pytest from math_utils import add def test_add_numbers(): assert add(2, 3) == 5
Ban đầu chưa có hàm add(), test chắc chắn fail.
Tiếp theo, ta viết code:
# math_utils.py def add(a, b): return a + b
Chạy lại test → pass ✅
Vòng lặp tiếp tục cho các function khác.
⚙️ CI/CD & Unit Test
- CI tools (Jenkins, GitLab CI, GitHub Actions, v.v.) sẽ chạy unit test tự động.
- Dựa vào exit code:
- 0 → Pass
- !=0 → Fail
Khi toàn bộ test pass → code được merge → build artifact → triển khai sang staging/UAT.
📌 Nội dung kiểm tra nhanh
Câu hỏi: Which option is not a benefit of using CI?
- merge difficulties
- ability to move faster
- fewer defects
- improved reliability
👉 Đáp án: merge difficulties (CI giúp giảm khó khăn khi merge, chứ không tạo thêm).