Le versioni di Python sono abbastanza compatibili, quindi non devi testare ogni versione minore. Invece:
- Prova la versione minima che stai per supportare, ad es. CPython 3.5.
- Prova l'ultima versione, ad es. CPython 3.7.
- Forse, prova un'altra implementazione Python come PyPy 3.7.
- Se supporti Python 2.7, provalo separatamente, ma nota che il 2.7 raggiungerà il suo EOL nel 2020, quindi non ha molto senso che un nuovo progetto lo supporti.
La versione minima che stai per supportare è una decisione che devi fare - non solo vedere in quale versione il tuo codice si è verificato. Ogni nuova versione migliora la lingua (ad esempio con nuove funzionalità come annotazioni di tipo, funzioni asincrone, stringhe di f, dit ordinati, ...) e migliora la libreria standard. Prenditi un momento per considerare quale sia il livello minimo che sosterrai. In particolare, provare a scrivere codice che sia valido sia Python 2.7 che 3.x può essere molto difficile se si considerano nuove caratteristiche di sintassi o i diversi significati di str
(rispetto a bytes
rispetto a unicode
).
Per un progetto open source, è possibile utilizzare facilmente servizi CI basati su cloud per fare ciò: un processo di compilazione per ciascuna versione di Python testata.
Per i test locali, personalmente cambio manualmente tra le versioni 2.7 e 3.6 di Python fornite dal mio sistema operativo, usando una virtualizzazione per ognuno dei pacchetti appropriati. Altre persone usano Tox per eseguire test su più versioni, il che aiuta a gestire i virtualenv automaticamente.
I test basati su Docker richiedono un po 'più di configurazione, ma sono ancora relativamente facili da fare. In particolare, facilitano il test su diverse versioni di Python senza doverle installare sul tuo sistema operativo principale. Nella mia esperienza, preferisco avere la mia configurazione di sviluppo principale al di fuori di Docker in modo da poter colpire la parte "build" dal ciclo edit-build-test. La finestra mobile potrebbe essere appropriata per i test CI o se il software ha delle dipendenze difficili da installare.