pytest-2.7.0: Fehlerbehebungen, Features, Geschwindigkeitsverbesserungen

pytest ist ein ausgereiftes Python-Testing-Tool mit mehr als 1100 eigenen Tests, die auf vielen verschiedenen Interpretern und Plattformen laufen. Diese Version ist als Drop-in-kompatibel zu 2.6.X gedacht.

Siehe unten für die Änderungen und Dokumentation unter

Wie üblich können Sie von PyPI aus upgraden über

pip install -U pytest

Danke an alle, die beigetragen haben, darunter

Anatoly Bubenkoff Floris Bruynooghe Brianna Laugher Eric Siegerman Daniel Hahler Charles Cloud Tom Viner Holger Peters Ldiary Translations almarklein

Viel Spaß, holger krekel

2.7.0 (im Vergleich zu 2.6.4)

  • Fehler behoben issue435: reload() funktioniert jetzt, wenn assert rewriting aktiv ist. Danke an Daniel Hahler.

  • Fehler behoben issue616: conftest.py-Dateien und ihre enthaltenen Fixtures werden jetzt unabhängig vom genauen aktuellen Arbeitsverzeichnis und den verwendeten Testargumenten ordnungsgemäß für die Sichtbarkeit berücksichtigt. Vielen Dank an Eric Siegerman und sein PR235, das systematische Tests für die Sichtbarkeit von conftest enthält und jetzt erfolgreich ist. Diese Änderung führt auch das Konzept eines rootdir ein, das als neue pytest-Überschrift ausgegeben und auf der pytest-Customizing-Webseite dokumentiert wird.

  • Änderung der Berichterstattung über "umgeleitete" Tests, d.h. Tests, die in einer Datei gesammelt werden, aber tatsächlich aus einer anderen stammen (z.B. wenn Tests in einer Testklasse aus einer Basisklasse in einer anderen Datei stammen). Wir zeigen nun die nodeid und kennzeichnen über einen Suffix die andere Datei.

  • Fähigkeit hinzugefügt, Kommandozeilenoptionen über die Umgebungsvariable PYTEST_ADDOPTS festzulegen.

  • Dokumentation zu den neuen pytest-dev-Teams auf Bitbucket und GitHub hinzugefügt. Siehe https://docs.pytest.de/en/stable/contributing.html. Danke an Anatoly für den Anstoß und die Vorarbeit dazu.

  • Fehler behoben issue650: neue Option --doctest-ignore-import-errors, die Importfehler in Doctests in Überspringungen umwandelt. Danke an Charles Cloud für den vollständigen PR.

  • Fehler behoben issue655: Problemumgehung für verschiedene Wege, die dazu führen, dass python2/3 sys.exc_info in Fixtures/Tests leakt und zu Fehlern im Code von Drittanbietern führt.

  • Fehler behoben issue615: Assertion-Rewriting hat %-Zeichen beim Formatieren von booleschen Operationen nicht korrekt maskiert, was bei der Vermischung von booleschen Werten mit Modulo-Operatoren zu Problemen führte. Danke an Tom Viner für den Bericht, die Triage und die Fehlerbehebung.

  • Implementierung von issue351: Fähigkeit hinzugefügt, parametrize-IDs als aufrufbare Funktion anzugeben, um benutzerdefinierte Test-IDs zu generieren. Danke an Brianna Laugher für die Idee und die Implementierung.

  • Einführung und Dokumentation des neuen Hookwrapper-Mechanismus, nützlich für Plugins, die die Ausführung bestimmter Hooks für ihre Zwecke wrappen möchten. Dies ersetzt das undokumentierte __multicall__-Protokoll, das pytest selbst und einige externe Plugins verwenden. Beachten Sie, dass pytest-2.8 so geplant ist, dass die Unterstützung für das alte __multicall__ eingestellt und nur noch das Hookwrapper-Protokoll unterstützt wird.

  • Deutliche Beschleunigung der Aufrufe von Plugin-Hooks

  • Verwendung des Hookwrapper-Mechanismus in integrierten pytest-Plugins.

  • Hinzufügen einer Doctest-Ini-Option für Doctest-Flags, danke Holger Peters.

  • Hinweis zu den Dokumenten hinzugefügt, dass, wenn Sie einen Parameter markieren möchten und der Parameter aufrufbar ist, Sie auch einen Grund angeben müssen, um ihn vom "Decorator"-Fall zu unterscheiden. Danke an Tom Viner.

  • Die Optionen "python_classes" und "python_functions" unterstützen jetzt Glob-Muster für die Test-Discovery, wie in issue600 besprochen. Danke Ldiary Translations.

  • Erlaubt, parametrisierte Fixtures mit nicht-parametrisierten und umgekehrt zu überschreiben (bubenkoff).

  • Fehler behoben issue463: spezifischer Fehler für falsch geschriebenes 'parameterize' wird ausgelöst (pfctdayelise).

  • Bei einem Fehler werden sys.last_value, sys.last_type und sys.last_traceback gesetzt, sodass ein Benutzer den Fehler durch Postmortem-Debugging untersuchen kann (almarklein).