Wie man Plugins installiert und verwendet¶
Dieser Abschnitt befasst sich mit der Installation und Verwendung von Drittanbieter-Plugins. Zum Schreiben eigener Plugins siehe Plugins schreiben.
Die Installation eines Drittanbieter-Plugins kann einfach mit pip erfolgen.
pip install pytest-NAME
pip uninstall pytest-NAME
Wenn ein Plugin installiert ist, findet und integriert pytest es automatisch, es muss nicht aktiviert werden.
Hier ist eine kleine kommentierte Liste einiger beliebter Plugins
pytest-django: Schreiben von Tests für django-Anwendungen, mit pytest-Integration.
pytest-twisted: Schreiben von Tests für twisted-Anwendungen, Starten eines Reaktors und Verarbeiten von Deferreds aus Testfunktionen.
pytest-cov: Coverage-Reporting, kompatibel mit verteiltes Testen.
pytest-xdist: Zum Verteilen von Tests auf CPUs und Remote-Hosts, zum Ausführen im Boxed-Modus, der es erlaubt, Segmentierungsfehler zu überstehen, zum Ausführen im Looponfailing-Modus, der fehlerhafte Tests bei Dateiänderungen automatisch erneut ausführt.
pytest-instafail: Zum Melden von Fehlern während des Testlaufs.
pytest-bdd: Zum Schreiben von Tests mit Behavior-Driven Testing.
pytest-timeout: Zum Timeout von Tests basierend auf Funktionsmarkierungen oder globalen Definitionen.
pytest-pep8: Eine Option
--pep8zum Aktivieren der PEP8-Konformitätsprüfung.pytest-flakes: Quellcode mit pyflakes prüfen.
allure-pytest: Testergebnisse über allure-framework melden.
Eine vollständige Liste aller Plugins mit ihrem neuesten Teststatus gegen verschiedene pytest- und Python-Versionen finden Sie unter Pytest Plugin Liste.
Sie können auch weitere Plugins über eine pytest- pypi.org Suche entdecken.
Plugins in einem Testmodul oder conftest-Datei anfordern/laden¶
Sie können Plugins in einem Testmodul oder einer conftest-Datei über pytest_plugins anfordern.
pytest_plugins = ("myapp.testsupport.myplugin",)
Wenn das Testmodul oder das conftest-Plugin geladen wird, werden die angegebenen Plugins ebenfalls geladen.
Hinweis
Die Anforderung von Plugins über eine pytest_plugins Variable in nicht-root conftest.py Dateien ist veraltet. Siehe die vollständige Erklärung im Abschnitt Plugins schreiben.
Hinweis
Der Name pytest_plugins ist reserviert und sollte nicht als Name für ein benutzerdefiniertes Plugin-Modul verwendet werden.
Feststellen, welche Plugins aktiv sind¶
Wenn Sie feststellen möchten, welche Plugins in Ihrer Umgebung aktiv sind, können Sie Folgendes eingeben:
pytest --trace-config
und erhalten einen erweiterten Test-Header, der aktivierte Plugins und ihre Namen anzeigt. Er gibt auch lokale Plugins, auch bekannt als conftest.py-Dateien, aus, wenn sie geladen werden.
Ein Plugin nach Namen deaktivieren / deregistrieren¶
Sie können Plugins am Laden hindern oder sie deregistrieren.
pytest -p no:NAME
Das bedeutet, dass jeder nachfolgende Versuch, das benannte Plugin zu aktivieren/laden, nicht funktioniert.
Wenn Sie ein Plugin für ein Projekt bedingungslos deaktivieren möchten, können Sie diese Option zu Ihrer Konfigurationsdatei hinzufügen:
[pytest]
addopts = ["-p", "no:NAME"]
[pytest]
addopts = -p no:NAME
Alternativ können Sie es nur in bestimmten Umgebungen (z. B. auf einem CI-Server) deaktivieren, indem Sie die Umgebungsvariable PYTEST_ADDOPTS auf -p no:name setzen.
Siehe Feststellen, welche Plugins aktiv sind, um den Namen eines Plugins zu erhalten.
Deaktivieren des automatischen Ladens von Plugins¶
Wenn Sie das automatische Laden von Plugins deaktivieren möchten, anstatt dass Sie jedes Plugin manuell mit -p oder PYTEST_PLUGINS angeben müssen, können Sie --disable-plugin-autoload oder PYTEST_DISABLE_PLUGIN_AUTOLOAD verwenden.
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
export PYTEST_PLUGINS=NAME,NAME2
pytest
pytest --disable-plugin-autoload -p NAME,NAME2
[pytest]
addopts = ["--disable-plugin-autoload", "-p", "NAME", "-p", "NAME2"]
[pytest]
addopts =
--disable-plugin-autoload
-p NAME
-p NAME2
Hinzugefügt in Version 8.4: Das Befehlszeilen-Flag --disable-plugin-autoload.