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:
- Konfigurationsanalyse – Einlesen der
tox.ini-Datei und Bestimmen der Umgebungsliste - Erstellung virtueller Umgebungen – für jeden angegebenen Python-Interpreter
- Paketinstallation – Installation des zu testenden Pakets in jeder Umgebung
- Abhängigkeiten installieren – Installation der im Abschnitt
depsangegebenen Abhängigkeiten - Befehlsausführung – Starten der im Abschnitt
commandsdefinierten Befehle
Auch in der Bibliothek
Datenvalidierung in Swift (iOS/macOS): Best Practices und Tools
Aufgabenplaner für Node.js (node-cron, node-schedule, Bull)
Aufgabenplaner für Node.js: node-schedule und node-cron
Objektserialisierung in Kotlin: Bibliotheken und Codebeispiele