Giới thiệu về pytest
pytest là một framework kiểm thử mạnh mẽ và phổ biến dành cho ngôn ngữ Python, được thiết kế để giúp các nhà phát triển và kỹ sư kiểm thử viết mã kiểm thử một cách dễ dàng, rõ ràng và hiệu quả. Với cú pháp đơn giản và khả năng mở rộng cao, pytest tự động phát hiện các trường hợp kiểm thử, cung cấp thông tin chi tiết khi có lỗi và hỗ trợ đa dạng các loại kiểm thử từ đơn vị đến tích hợp.
Yêu cầu Tiên quyết: Python và pip
Trước khi bắt đầu cài đặt pytest, bạn cần đảm bảo rằng Python và trình quản lý gói pip đã được cài đặt chính xác trên hệ thống của bạn.
-
Để kiểm tra phiên bản Python, hãy mở cửa sổ dòng lệnh (CMD hoặc Terminal) và nhập lệnh sau:
Bạn sẽ thấy phiên bản Python được hiển thị (ví dụ:python --versionPython 3.9.5). Nếu lệnh không hoạt động, bạn cần cài đặt Python từ trang chủ python.org. -
Tương tự, kiểm tra phiên bản
pip:pip --version -
Nếu
pipcủa bạn đã cũ, việc cập nhật lên phiên bản mới nhất là điều nên làm để tránh các vấn đề tiềm ẩn trong quá trình cài đặt gói. Sử dụng lệnh sau để nâng cấppip:python -m pip install --upgrade pip
Cài đặt Gói Python (Ví dụ Tổng quát)
Mặc dù không bắt buộc đối với pytest, việc cài đặt các gói Python khác là một tác vụ phổ biến. Ví dụ, để cài đặt thư viện requests, bạn sẽ sử dụng pip như sau:
pip install requests
Để xác nhận gói đã được cài đặt thành công, bạn có thể mở trình thông dịch Python (bằng cách gõ python vào CMD) và thử nhập thư viện:
import requests
print(requests.__version__)
Nếu không có lỗi và phiên bản được in ra, quá trình cài đặt đã thành công.
Cài đặt pytest
Việc cài đặt pytest rất đơn giản thông qua pip.
Từ cửa sổ dòng lệnh của bạn, thực thi lệnh sau:
pip install pytest
Xác minh Cài đặt pytest và Xử lý Lỗi Thường gặp
Sau khi cài đặt, điều quan trọng là phải xác nhận pytest đã được hệ thống của bạn nhận dạng chính xác.
Kiểm tra Phiên bản pytest
Để kiểm tra phiên bản pytest đã cài đặt, sử dụng lệnh:
pytest --version
Xử lý Lỗi: 'pytest' không được nhận dạng là lệnh nội bộ hoặc bên ngoài...
Lỗi này thường xảy ra khi thư mục chứa file thực thi của pytest không được thêm vào biến môi trường PATH của hệ thống. pip thường đặt các file thực thi trong thư mục Scripts con của thư mục cài đặt Python của bạn (ví dụ: C:\Python39\Scripts).
Giải pháp cho hệ điều hành Windows:
- Nhấp chuột phải vào biểu tượng "This PC" (hoặc "My Computer") và chọn "Properties".
- Trong cửa sổ "System", chọn "Advanced system settings".
- Trong cửa sổ "System Properties", nhấp vào nút "Environment Variables...".
- Trong phần "System variables", tìm và chọn biến
Path, sau đó nhấp vào "Edit". - Nhấp "New" và thêm đường dẫn đầy đủ đến thư mục
Scriptscủa Python của bạn (ví dụ:C:\Users\TÊN_NGƯỜI_DÙNG\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\ScriptshoặcC:\Python39\Scripts). - Nhấp "OK" trên tất cả các cửa sổ để lưu thay đổi.
- Điều quan trọng là phải khởi động lại cửa sổ dòng lệnh của bạn để các thay đổi có hiệu lực. Sau đó, thử chạy
pytest --versionmột lần nữa.
Nếu file pytest.exe thực sự bị thiếu trong thư mục Scripts của bạn, bạn có thể cần phải buộc cài đặt lại hoặc cập nhật pytest từ bên trong thư mục đó. Di chuyển đến thư mục Scripts của Python trong CMD (ví dụ: cd D:\Python\Python39\Scripts) và sau đó chạy:
pip install -U pytest
Khởi động lại CMD và xác minh.
Các Quy tắc Cơ bản để Viết Kiểm thử với pytest
pytest tuân theo nguyên tắc "quy ước hơn cấu hình", giúp việc khám phá và chạy kiểm thử trở nên trực quan.
- Tên file kiểm thử: Đặt tên file kiểm thử bắt đầu bằng
test_(ví dụ:test_calculation.py) hoặc kết thúc bằng_test.py. - Tên lớp kiểm thử: Nếu bạn nhóm các kiểm thử vào các lớp, tên lớp phải bắt đầu bằng
Test(ví dụ:TestMathOperations). Các lớp kiểm thử không được có hàm tạo__init__. - Tên hàm kiểm thử: Tất cả các hàm kiểm thử phải bắt đầu bằng
test_(ví dụ:test_add_numbers). - Khẳng định (Assertions): Sử dụng từ khóa
asserttiêu chuẩn của Python để đưa ra các khẳng định.pytesttự động cung cấp thông tin chi tiết về lỗi nếu khẳng định thất bại.
Ví dụ Kiểm thử pytest Đơn giản
Hãy tạo một file Python nhỏ, ví dụ calculator.py:
# calculator.py
def add_numbers(num1, num2):
return num1 + num2
def subtract_numbers(num1, num2):
return num1 - num2
Bây giờ, tạo một file kiểm thử, test_operations.py, trong cùng thư mục:
# test_operations.py
from calculator import add_numbers, subtract_numbers
class TestCalculatorFunctions:
def test_add_positive_numbers(self):
result = add_numbers(7, 3)
assert result == 10
def test_subtract_positive_numbers(self):
result = subtract_numbers(15, 5)
assert result == 10
def test_add_negative_numbers(self):
result = add_numbers(-4, -6)
assert result == -10
def test_multiply_values(): # Hàm kiểm thử độc lập
assert (4 * 5) == 20
def test_divide_values_by_one():
assert (10 / 1) == 10
Để chạy các kiểm thử này, điều hướng đến thư mục chứa calculator.py và test_operations.py trong cửa sổ dòng lệnh của bạn và chỉ cần gõ:
pytest
pytest sẽ tự động tìm kiếm và thực thi tất cả các kiểm thử tuân thủ quy tắc, sau đó báo cáo kết quả chi tiết.