Thỉnh thoảng tôi thấy mình kiểm tra chủ đề của vị trí kiểm tra và mỗi lần đa số đề xuất một cấu trúc thư mục riêng bên cạnh mã thư viện, nhưng tôi thấy rằng mỗi lần các đối số đều giống nhau và không thuyết phục. Tôi cuối cùng đặt các mô-đun thử nghiệm của tôi ở đâu đó bên cạnh các mô-đun cốt lõi.
Lý do chính để làm điều này là: tái cấu trúc .
Khi tôi di chuyển mọi thứ xung quanh tôi muốn các mô-đun thử nghiệm di chuyển với mã; thật dễ dàng để mất các bài kiểm tra nếu chúng ở trong một cây riêng biệt. Hãy trung thực, sớm hay muộn bạn kết thúc với một cấu trúc thư mục hoàn toàn khác, như django , bình và nhiều thứ khác. Sẽ tốt thôi nếu bạn không quan tâm.
Câu hỏi chính bạn nên tự hỏi mình là:
Tôi đang viết:
- a) thư viện tái sử dụng hoặc
- b) xây dựng một dự án hơn các gói cùng nhau một số mô-đun bán tách?
Nếu một:
Một thư mục riêng và nỗ lực thêm để duy trì cấu trúc của nó có thể phù hợp hơn. Không ai sẽ phàn nàn về các thử nghiệm của bạn được triển khai để sản xuất .
Nhưng thật dễ dàng để loại trừ các bài kiểm tra khỏi bị phân phối khi chúng được trộn với các thư mục cốt lõi; đặt cái này trong setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Nếu b:
Bạn có thể muốn - như mọi người trong chúng ta làm - rằng bạn đang viết thư viện có thể sử dụng lại, nhưng phần lớn thời gian cuộc sống của họ gắn liền với cuộc sống của dự án. Khả năng dễ dàng duy trì dự án của bạn nên được ưu tiên.
Sau đó, nếu bạn đã làm một công việc tốt và mô-đun của bạn phù hợp với dự án khác, nó có thể sẽ được sao chép - không bị rẽ nhánh hoặc được tạo thành một thư viện riêng - vào dự án mới này và di chuyển các thử nghiệm nằm bên cạnh nó trong cùng cấu trúc thư mục thật dễ dàng so với việc kiểm tra các bài kiểm tra trong một mớ hỗn độn mà một thư mục kiểm tra riêng biệt đã trở thành. (Bạn có thể lập luận rằng nó không nên là một mớ hỗn độn ở nơi đầu tiên nhưng hãy thực tế ở đây).
Vì vậy, sự lựa chọn vẫn là của bạn, nhưng tôi sẽ lập luận rằng với các bài kiểm tra hỗn hợp, bạn đạt được tất cả những điều tương tự như với một thư mục riêng, nhưng ít nỗ lực hơn trong việc giữ mọi thứ gọn gàng.