
Có bao giờ test của bạn báo "Pass" xanh lè nhưng code thực tế lại lỗi tung tóe chưa? Pytest rất mạnh, nhưng lúc mới học, nó hay để bạn lọt những thói quen xấu.
Test sinh ra là để BÁO LỖI khi code sai. Nếu bạn chưa từng chủ động làm cho test bị "Fail" thử một lần, đừng vội tin nó.
Cài bằng pip install pytest. Tại thư mục dự án, chỉ cần gõ pytest. Nó sẽ tự tìm các file có tên bắt đầu bằng test_*.py.
Không cần học cú pháp phức tạp. Cứ viết hàm bắt đầu bằng test_ và dùng assert của Python thuần.
def test_addition():
assert 1 + 1 == 2
Để code nhanh hơn, hãy chỉ chạy đúng cái test bạn đang sửa thay vì chạy lại toàn bộ hệ thống:
pytest test_math.py::test_addition
Dùng fixtures để chuẩn bị dữ liệu giả hoặc kết nối DB một lần duy nhất, tránh việc phải copy-paste code setup vào mọi hàm test.
@pytest.fixture
def empty_cart():
return ShoppingCart()
def test_add_item(empty_cart):
empty_cart.add("apple")
assert len(empty_cart) == 1
Đừng viết hàm test_truong_hop_1, test_truong_hop_2. Hãy dùng parametrize để truyền danh sách các input vào cùng một logic.
@pytest.mark.parametrize("a,b,expected", [(1,2,3), (-1,1,0)])
def test_add(a, b, expected):
assert add(a, b) == expected
Tuyệt đối không dùng try/except để kiểm tra lỗi. Hãy dùng pytest.raises để đảm bảo code của bạn tung ra đúng loại lỗi bạn muốn.
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError):
divide(1, 0)
Làm thế nào để chạy một test cụ thể trong pytest?
Làm sạch log AI CLI, tạo biểu thức cron, giải mã JWT và tính quyền chmod offline.

Thiết kế các bộ kiểm thử gọn gàng với phạm vi pytest fixture, tham số hóa gián tiếp, các hook generator động và các mẫu vòng đời dọn dẹp linh hoạt.
Đọc tiếp
Mật mã hậu lượng tử không còn là lý thuyết – NIST đã hoàn thiện các tiêu chuẩn đầu tiên vào năm 2024. Đây là những gì kỹ sư phần mềm cần hiểu về các mốc thời gian đe dọa lượng tử, CRYSTALS-Kyber, CRYSTALS-Dilithium và việc di chuyển ngăn xếp TLS của bạn trước khi máy tính lượng tử ra đời.
Đọc tiếp
Ba cách xử lý đồng thời trong Python - threading, multiprocessing và coroutine - được giải thích từ đầu, không cần biết trước. Biết khi nào dùng cái nào và tại sao GIL lại quan trọng đến vậy.
Đọc tiếp