tox – Python-Tests mit verschiedenen Versionen automatisieren

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Wenn Sie Bibliotheken oder Anwendungen in Python entwickeln, ist es entscheidend, deren Kompatibilität mit verschiedenen Interpreter-Versionen sicherzustellen. Besonders relevant wird dies bei der Veröffentlichung von Paketen auf PyPI, wo Nutzer unterschiedliche Python-Versionen einsetzen. Die manuelle Installation von Python 3.7, 3.8, 3.9, 3.10 und das anschließende Testen jeder Version ist zeitaufwändig und mühsam.

Hier kommt tox ins Spiel – ein leistungsstarkes Tool zur Testautomatisierung, das Tests in isolierten virtuellen Umgebungen mit verschiedenen Python-Versionen ausführt. Tox automatisiert die Installation von Abhängigkeiten, erstellt saubere Umgebungen und gewährleistet reproduzierbare Testergebnisse.

Was ist tox und warum wird es benötigt?

Tox (Kurzform für "testing out of the box") ist ein in Python geschriebenes Kommandozeilen-Tool, das den Testprozess von Python-Projekten in verschiedenen Umgebungen automatisiert. Es erstellt isolierte virtuelle Umgebungen, installiert darin Abhängigkeiten und führt Tests aus, um die Kompatibilität des Codes mit verschiedenen Python-Versionen und Abhängigkeitssätzen zu prüfen.

Hauptvorteile von tox:

Umgebungsisolierung – jeder Test läuft in einer separaten virtuellen Umgebung, wodurch Abhängigkeitskonflikte vermieden werden.

Automatisierung – vollständig automatisierter Prozess zur Erstellung von Umgebungen, Installation von Abhängigkeiten und Ausführung von Tests.

Multi-Versionen-Testing – gleichzeitiges Testen mit verschiedenen Python-Versionen.

Reproduzierbarkeit – Garantie identischer Ergebnisse in unterschiedlichen Umgebungen.

CI/CD-Integration – einfache Einrichtung für automatisierte Tests in Continuous-Integration-Systemen.

Installation und erste Konfiguration

Installation von tox

Sie können tox auf verschiedene Weisen installieren:

# Über pip
pip install tox

# Über conda
conda install -c conda-forge tox

# Über pipx (empfohlen)
pipx install tox

Erstellen einer grundlegenden Konfigurationsdatei

Die Hauptkonfigurationsdatei von tox ist tox.ini, die sich im Stammverzeichnis Ihres Projekts befinden sollte:

[tox]
envlist = py38, py39, py310, py311

[testenv]
deps = 
    pytest
    pytest-cov
commands = 
    pytest tests/ --cov=src/

Projektstruktur

Für eine korrekte Funktion von tox wird die folgende Projektstruktur empfohlen:

my_project/
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── module.py
├── tests/
│   ├── __init__.py
│   └── test_module.py
├── tox.ini
├── setup.py (oder pyproject.toml)
└── requirements.txt

Grundlagen der Arbeit mit tox

Basisbefehle

Tox bietet eine einfache Kommandozeilenschnittstelle:

# Alle Umgebungen aus envlist ausführen
tox

# Eine bestimmte Umgebung ausführen
tox -e py39

# Mehrere Umgebungen ausführen
tox -e py38,py39,lint

# Umgebungen zwangsweise neu erstellen
tox -r

# Ausführung mit detaillierter Ausgabe
tox -v

# Sehr detaillierte Ausgabe (für Debugging)
tox -vv

Wie tox funktioniert

Der Arbeitsablauf von tox besteht aus den folgenden Schritten:

  1. Konfigurationsanalyse – Einlesen der tox.ini-Datei und Bestimmen der Umgebungsliste
  2. Erstellung virtueller Umgebungen – für jeden angegebenen Python-Interpreter
  3. Paketinstallation – Installation des zu testenden Pakets in jeder Umgebung
  4. Abhängigkeiten installieren – Installation der im Abschnitt deps angegebenen Abhängigkeiten
  5. Befehlsausführung – Starten der im Abschnitt commands definierten Befehle

Empfehlungen