Bối cảnh:
Tôi hiện đang làm việc trên một dự án nhỏ trong Python. Tôi thường cấu trúc các lớp của mình với một số phương thức công khai được ghi lại nhưng chủ yếu xử lý các khái niệm mức cao (những gì người dùng của lớp nên biết và sử dụng) và một loạt các phương thức ẩn (bắt đầu bằng dấu gạch dưới) chịu trách nhiệm về xử lý mức độ phức tạp hoặc thấp.
Tôi biết rằng các thử nghiệm là điều cần thiết để cung cấp sự tự tin về mã và để đảm bảo rằng mọi sửa đổi sau này không phá vỡ hành vi trước đó.
Vấn đề:
Để xây dựng các phương thức công khai cấp cao hơn trên cơ sở đáng tin cậy, tôi thường thử nghiệm các phương thức riêng tư. Tôi thấy dễ dàng hơn để tìm hiểu xem một sửa đổi mã đã đưa ra hồi quy và ở đâu. Điều đó có nghĩa là những thử nghiệm nội bộ đó có thể vi phạm các sửa đổi nhỏ và sẽ cần phải được sửa chữa / thay thế
Nhưng tôi cũng biết rằng phương pháp thử nghiệm đơn vị ít nhất là một khái niệm gây tranh cãi hoặc thường được coi là thực tiễn xấu. Lý do là: chỉ nên kiểm tra hành vi công khai (tham khảo )
Câu hỏi:
Tôi quan tâm đến việc làm theo các thực tiễn tốt nhất và muốn hiểu:
- Tại sao sử dụng thử nghiệm đơn vị trên các phương thức riêng tư / ẩn lại có hại (rủi ro là gì)?
- các thực tiễn tốt nhất khi các phương thức công cộng có thể sử dụng mức độ thấp và / hoặc xử lý phức tạp là gì?
Phòng ban:
- nó không phải là một cách câu hỏi. Python không có khái niệm thực sự về quyền riêng tư và các phương thức ẩn đơn giản là không được liệt kê nhưng có thể được sử dụng khi bạn biết tên của chúng
- Tôi chưa bao giờ được dạy các quy tắc và mô hình lập trình: các lớp học cuối cùng của tôi là từ những năm 80 ... Tôi chủ yếu học các ngôn ngữ bằng thử nghiệm và thất bại và các tài liệu tham khảo trên Internet (Stack Exchange là sở thích của tôi trong nhiều năm)