Simon Willison Blog
85

Sản phẩm

Graham Dumpleton ra mắt thư viện Wrapture: Công cụ mạnh mẽ cho Python để theo dõi và kiểm thử hàm

(giờ Việt Nam)

Tóm tắt AI

Tác giả mod_wsgi vừa giới thiệu Wrapture, thư viện Python cho phép bao bọc hàm để theo dõi hoặc thay thế giá trị trả về. Công cụ này hỗ trợ OpenTelemetry và cấu hình linh hoạt, là giải pháp thay thế hiệu quả cho unittest.mock.

Bản dịch AI

Giới thiệu wrapture. Một sản phẩm mới từ Graham Dumpleton (nổi tiếng với wrapt, mod_wsgi và Python agent của New Relic), người mô tả Wrapture là công cụ kế thừa các ý tưởng monkeypatching từ wrapt và mở rộng chúng để áp dụng đồng thời cho việc kiểm thử (testing) và truy vết (tracing).

Wrapture (xem tài liệu đầy đủ tại đây) giúp việc bao bọc (wrap) bất kỳ hàm hoặc phương thức nào trở nên dễ dàng, cho phép truy vết mọi lượt truy cập hoặc ghi đè để trả về một giá trị khác.

Nó đóng vai trò vừa là giải pháp thay thế cho unittest.mock, vừa là cách để triển khai truy vết cho một dự án hiện có:

Gắn khả năng quan sát vào mã nguồn mà bạn không kiểm soát, ghi lại những gì luân chuyển qua đó mà không làm ảnh hưởng đến chương trình đang được theo dõi, là một vấn đề mà tôi chưa bao giờ ngừng suy nghĩ.

Wrapture bao gồm hỗ trợ OpenTelemetry và thậm chí có một cơ chế hoàn toàn dựa trên cấu hình để thêm tính năng truy vết vào một dự án Python hiện có, trông như thế này:

Đây vẫn là một dự án rất non trẻ - chỉ mới vài tuần tuổi - nhưng đã có một khởi đầu đầy hứa hẹn.

Thú vị thay, đây cũng là nỗ lực đầu tiên của Graham trong một dự án lớn hoàn toàn dựa trên agent:

Mọi dòng mã và tài liệu trong wrapture đều được viết bởi một trợ lý AI dưới sự chỉ đạo của tôi. Tôi muốn thẳng thắn về điều đó, và cũng thẳng thắn về những gì không phải như vậy. Đây không phải là "vibe coding", nơi một câu lệnh prompt duy nhất tạo ra một đống mã và người thực hiện chỉ biết hy vọng vào kết quả vì họ thiếu kiến thức để đánh giá những gì nhận được. "Vibe coding" đã mang tiếng xấu là có lý do. Tôi đã thiết kế wrapture một cách cẩn thận ngay từ đầu. Tôi đã dành rất nhiều thời gian trong lĩnh vực cụ thể này của Python và biết chính xác kết quả cần đạt được là gì, AI chỉ là phương tiện để tạo ra nó chứ không phải là nguồn gốc của thiết kế.

Trong một bài viết tiếp theo, Unit testing with wrapture, Graham đã trình bày các mẫu kiểm thử được thư viện mới này hỗ trợ:

Và ví dụ thú vị này về một bài kiểm thử gọi và sau đó sửa đổi giá trị trả về từ phương thức gốc:

(Trong cả hai ví dụ này, phương thức OrderService.place(...) đều gọi đến Gateway.charge(...).)

PythonOpenTelemetryLập trìnhCông cụKiểm thử
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Simon Willison Blog. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.