Introduction
Lorsque vous développez des bibliothèques ou des applications en Python, il est essentiel de garantir leur compatibilité avec différentes versions de l'interpréteur. Cela devient particulièrement crucial lors de la publication de paquets sur PyPI, où vos utilisateurs peuvent utiliser des versions variées de Python. Installer manuellement Python 3.7, 3.8, 3.9, 3.10 et tester chaque version est un processus long et fastidieux.
C'est là que Tox entre en jeu — un puissant outil d'automatisation des tests qui vous permet d'exécuter vos tests dans des environnements virtuels isolés avec différentes versions de Python. Tox gère automatiquement l'installation des dépendances, la création d'environnements propres et garantit la reproductibilité de vos résultats de test.
Qu'est-ce que Tox et pourquoi l'utiliser ?
Tox (abréviation de "testing out of the box") est un outil en ligne de commande écrit en Python qui automatise le processus de test de vos projets Python dans divers environnements. Il crée des environnements virtuels isolés, y installe les dépendances et exécute les tests, vous permettant ainsi de vérifier la compatibilité de votre code avec différentes versions de Python et différents ensembles de dépendances.
Les principaux avantages de Tox :
Isolation des environnements — chaque test s'exécute dans un environnement virtuel séparé, éliminant ainsi les conflits de dépendances.
Automatisation — un processus entièrement automatisé pour la création d'environnements, l'installation des dépendances et l'exécution des tests.
Multi-versions — la possibilité de tester simultanément sur différentes versions de Python.
Reproductibilité — la garantie d'obtenir les mêmes résultats dans des environnements différents.
Intégration CI/CD — une configuration simple pour les tests automatisés dans les systèmes d'intégration continue.
Installation et configuration initiale
Installation de Tox
Vous pouvez installer Tox de plusieurs manières :
# Via pip
pip install tox
# Via conda
conda install -c conda-forge tox
# Via pipx (méthode recommandée)
pipx install tox
Création du fichier de configuration de base
Le fichier de configuration principal de Tox est tox.ini, qui doit se trouver à la racine de votre projet :
[tox]
envlist = py38, py39, py310, py311
[testenv]
deps =
pytest
pytest-cov
commands =
pytest tests/ --cov=src/
Structure du projet
Pour un fonctionnement optimal de Tox, nous vous recommandons la structure de projet suivante :
my_project/
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── module.py
├── tests/
│ ├── __init__.py
│ └── test_module.py
├── tox.ini
├── setup.py (ou pyproject.toml)
└── requirements.txt
Les bases de l'utilisation de Tox
Commandes essentielles
Tox offre une interface en ligne de commande simple :
# Exécuter tous les environnements de envlist
tox
# Exécuter un environnement spécifique
tox -e py39
# Exécuter plusieurs environnements
tox -e py38,py39,lint
# Forcer la recréation des environnements
tox -r
# Exécuter avec une sortie détaillée
tox -v
# Sortie très détaillée (pour le débogage)
tox -vv
Comment fonctionne Tox
Le processus de travail de Tox se déroule en plusieurs étapes :
- Analyse de la configuration — lecture du fichier
tox.iniet détermination de la liste des environnements - Création des environnements virtuels — pour chaque interpréteur Python spécifié
- Installation du paquet — installation du paquet testé dans chaque environnement
- Installation des dépendances — installation des dépendances listées dans la section
deps - Exécution des commandes — lancement des commandes définies dans la section
commands