Harness Academy
Tài liệu gốc 37 2 phútTiếng Việt + English
docs/mutation-testing.mdXem bản gốc
Ngôn ngữ bài đọc
Bản dịch tiếng Việt

Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.

Kiểm tra đột biến

Thử nghiệm đột biến bổ sung cho yêu cầu bao phủ chi nhánh 100%: phạm vi bao phủ chứng minh mọi hoạt động của dòng và nhánh, thử nghiệm đột biến chứng minh các khẳng định thực sự xác định hành vi đó.

bìa pydantic_ai_harness/filesystem/_toolset.py và pydantic_ai_harness/shell/_toolset.py.

Chạy với mutmut v3 qua scripts/run-mutmut.sh, cài đặt mutmut tạm thời với uv run --with -- không phụ thuộc vào nhà phát triển được yêu cầu.

scripts/run-mutmut.sh run --max-children 1
scripts/run-mutmut.sh results
scripts/run-mutmut.sh show <mutant-name>

Phiên dịch những người sống sót

Một dị nhân còn sống sót là một thử nghiệm còn thiếu hoặc một đột biến tương đương -- một sự thay đổi tạo ra hành vi mà không bài kiểm tra nào có thể phân biệt được với bản gốc. Phân loại từng người sống sót; các danh mục đột biến tương đương định kỳ trong cơ sở mã này là:

  • Thông số mặc định của tấm bạt lò xo -- các hàm bao bọc mutmut v3 và trình bao bọc giữ các giá trị mặc định ban đầu, do đó, mặc định bị thay đổi sẽ không bao giờ được quan sát thấy.
  • Bỏ qua name= trong add_function() -- pydantic-ai quay trở lại method.__name__, tương đương với tên rõ ràng bị biến đổi.
  • 'utf-8' đột biến mã hóa -- Tra cứu codec của Python không phân biệt chữ hoa chữ thường và UTF-8 là mã hóa văn bản mặc định, vì vậy những thay đổi về chữ hoa/bỏ sót là không được phép.
  • errors='replace' đột biến -- chỉ được thực hiện bởi các byte không hợp lệ; hợp lệ Dữ liệu kiểm tra UTF-8 không bao giờ gọi trình xử lý lỗi.
  • Không thể truy cập except khối (được đánh dấu pragma: no cover) -- những đường dẫn đó không thể được kích hoạt trong môi trường thử nghiệm.
  • CancelScope(shield=True) lật -- yêu cầu hủy bỏ bên ngoài trong khi cửa sổ dọn dẹp gần như ngay lập tức.

Bất kỳ điều gì nằm ngoài các danh mục này đều phải được coi là khoảng cách thực sự và bị loại bỏ. với một bài kiểm tra mới.

Hạn chế

Các xét nghiệm ba tham số được loại trừ trong quá trình thử nghiệm đột biến (-k 'not trio' trong pyproject.toml [tool.mutmut]) bởi vì bộ ba lỗi trong mutmut's môi trường quy trình con trên Python 3.14/macOS. Tỷ lệ tiêu diệt không bị ảnh hưởng -- bộ ba bài kiểm tra thực hiện các đường dẫn mã giống như bài kiểm tra asyncio.

Mục lục nguồn