Sesekali saya mendapati diri saya memeriksa topik penempatan tes, dan setiap kali mayoritas merekomendasikan struktur folder terpisah di samping kode perpustakaan, tetapi saya menemukan bahwa setiap kali argumennya sama dan tidak terlalu meyakinkan. Saya akhirnya meletakkan modul tes saya di suatu tempat di samping modul inti.
Alasan utama untuk melakukan ini adalah: refactoring .
Ketika saya memindahkan barang-barang di sekitar saya ingin modul uji untuk bergerak dengan kode; mudah untuk kehilangan tes jika mereka berada di pohon yang terpisah. Mari kita jujur, cepat atau lambat Anda berakhir dengan struktur folder yang sama sekali berbeda, seperti Django , termos dan banyak lainnya. Tidak apa-apa jika Anda tidak peduli.
Pertanyaan utama yang harus Anda tanyakan pada diri sendiri adalah ini:
Apa saya menulis:
- a) perpustakaan yang dapat digunakan kembali atau
- b) membangun proyek daripada bundel bersama beberapa modul setengah terpisah?
Jika sebuah:
Folder terpisah dan upaya ekstra untuk mempertahankan strukturnya mungkin lebih cocok. Tidak ada yang akan mengeluh tentang tes Anda yang digunakan untuk produksi .
Tetapi juga mudah untuk mengecualikan tes dari didistribusikan ketika mereka dicampur dengan folder inti; letakkan ini di setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Jika b:
Anda mungkin berharap - seperti yang kita semua lakukan - bahwa Anda menulis perpustakaan yang dapat digunakan kembali, tetapi sebagian besar waktu hidup mereka terkait dengan kehidupan proyek. Kemampuan untuk mempertahankan proyek Anda dengan mudah harus menjadi prioritas.
Kemudian jika Anda melakukan pekerjaan dengan baik dan modul Anda cocok untuk proyek lain, itu mungkin akan disalin - tidak bercabang atau dibuat menjadi perpustakaan yang terpisah - ke dalam proyek baru ini, dan memindahkan tes yang ada di sampingnya di struktur folder yang sama mudah dibandingkan dengan memancing tes dalam kekacauan yang menjadi folder tes terpisah. (Anda mungkin berpendapat bahwa itu seharusnya tidak berantakan sejak awal tetapi mari kita bersikap realistis di sini).
Jadi pilihannya tetap milik Anda, tetapi saya berpendapat bahwa dengan tes campuran Anda mencapai semua hal yang sama dengan folder yang terpisah, tetapi dengan sedikit upaya untuk menjaga hal-hal tetap rapi.