Ogni tanto mi ritrovo a controllare l'argomento del posizionamento del test, e ogni volta la maggioranza raccomanda una struttura di cartelle separata accanto al codice della libreria, ma trovo che ogni volta gli argomenti sono gli stessi e non sono così convincenti. Finisco per mettere i miei moduli di prova da qualche parte accanto ai moduli principali.
Il motivo principale per questo è: refactoring .
Quando muovo le cose voglio che i moduli di test si muovano con il codice; è facile perdere i test se si trovano in un albero separato. Siamo onesti, prima o poi finirai con una struttura di cartelle totalmente diversa, come django , pallone e molti altri. Va bene se non ti interessa.
La domanda principale che dovresti porti è questa:
Sto scrivendo:
- a) biblioteca riutilizzabile o
- b) costruire un progetto piuttosto che raggruppare insieme alcuni moduli semi-separati?
Se una:
Una cartella separata e lo sforzo extra per mantenere la sua struttura potrebbero essere più adatti. Nessuno si lamenterà del fatto che i test vengano distribuiti alla produzione .
Ma è altrettanto facile escludere i test dalla distribuzione quando sono mescolati con le cartelle principali; inseriscilo in setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Se b:
Potresti desiderare - come ognuno di noi fa - di scrivere librerie riutilizzabili, ma il più delle volte la loro vita è legata alla vita del progetto. La capacità di mantenere facilmente il tuo progetto dovrebbe essere una priorità.
Quindi se hai fatto un buon lavoro e il tuo modulo è adatto per un altro progetto, probabilmente verrà copiato - non biforcuto o trasformato in una libreria separata - in questo nuovo progetto e spostando i test che si trovano accanto ad esso nella stessa struttura di cartelle è facile rispetto ai test di pesca in un pasticcio che era diventata una cartella di test separata. (Potresti sostenere che non dovrebbe essere un disastro in primo luogo, ma cerchiamo di essere realistici qui).
Quindi la scelta è ancora tua, ma direi che con i test confusi si ottengono le stesse cose che con una cartella separata, ma con meno sforzi per mantenere le cose in ordine.