Tox : testez votre code Python sur plusieurs versions

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 :

  1. Analyse de la configuration — lecture du fichier tox.ini et détermination de la liste des environnements
  2. Création des environnements virtuels — pour chaque interpréteur Python spécifié
  3. Installation du paquet — installation du paquet testé dans chaque environnement
  4. Installation des dépendances — installation des dépendances listées dans la section deps
  5. Exécution des commandes — lancement des commandes définies dans la section commands

Recommendations