pytest-2.6.0: kürzere Tracebacks, neues Warnsystem, Test-Runner-Kompatibilität

pytest ist ein ausgereiftes Python-Testing-Tool mit über 1000 Tests gegen sich selbst, das auf vielen verschiedenen Interpretern und Plattformen läuft.

Die Version 2.6.0 sollte abwärtskompatibel zu 2.5.2 sein und behebt eine Reihe von Fehlern und bringt einige neue Funktionen, hauptsächlich

  • kürzere Tracebacks standardmäßig: Es werden nur der erste (Testfunktion) und der letzte (Fehlerort) Eintrag angezeigt, die dazwischen liegenden nur im „kurzen“ Format. Verwenden Sie --tb=long, um das alte Verhalten wiederherzustellen, bei dem überall „lange“ Einträge angezeigt werden.

  • ein neues Warnsystem, das Merkwürdigkeiten während der Sammlung und Ausführung meldet. Beispielsweise erzeugt das Ignorieren von Test*-Klassen mit einer __init__ nun eine Warnung.

  • verschiedene Verbesserungen der Nose/Mock/Unittest-Integration

Beachten Sie auch, dass 2.6.0 die Richtlinie „null gemeldete Fehler“ aufgibt, da es zu schwierig war, diese einzuhalten, leider. Stattdessen sind wir vorerst eher daran gebunden, an „hochgewählten“ Problemen im https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open&sort=-votes Issue Tracker zu arbeiten.

Siehe Dokumentation unter

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

pip install -U pytest

Danke an alle, die beigetragen haben, darunter

Benjamin Peterson Jurko Gospodnetić Floris Bruynooghe Marc Abramowitz Marc Schlaich Trevor Bekolay Bruno Oliveira Alex Groenholm

Viel Spaß, holger krekel

2.6.0

  • Fehler behoben issue537: Vermeiden Sie es, standardmäßig alten Code zur Neuerklärung von Assertionen zu importieren. Vielen Dank an Benjamin Peterson.

  • Fehler behoben issue364: Verkürzung und Verbesserung der Traceback-Darstellung standardmäßig. Die neue Option „–tb=auto“ (Standard) zeigt lange Tracebacks nur für den ersten und letzten Eintrag an. Sie können das alte Verhalten, alle Einträge als lange Einträge zu drucken, mit „–tb=long“ erhalten. Kurze Einträge werden standardmäßig nun sehr ähnlich zu „–tb=native“ gedruckten Einträgen angezeigt.

  • Fehler behoben issue514: Assertion-Neuerklärung für private Klassenattribute trainiert. Vielen Dank an Benjamin Peterson.

  • Änderung der -v Ausgabe, um vollständige Node-IDs von Tests einzuschließen. Benutzer können eine Node-ID aus einem Testlauf kopieren, einschließlich der Zeilennummer, und sie als positionsgebundenes Argument verwenden, um nur einen einzelnen Test auszuführen.

  • Fehler behoben issue 475: Frühes und verständliches Scheitern, wenn pytest.raises mit falschem Ausnahmetyp aufgerufen wird.

  • Fehler behoben issue516: Informationen über aktuelle Abhängigkeiten in der Anleitung „Erste Schritte“.

  • setup.py etwas bereinigt und unterstützte Versionen angegeben. Vielen Dank an Jurko Gospodnetic für den PR.

  • Änderung der XPASS-Farbe zu Gelb statt Rot, wenn Tests mit -v ausgeführt werden.

  • Fehler behoben issue473: Workaround für mock, das eine ungebundene Methode in ein Klassen-Dictionary einfügt, wenn doppelt gepatcht wird.

  • Fehler behoben issue498: Wenn ein Fixture-Finalizer fehlschlägt, stellen Sie sicher, dass das Fixture trotzdem ungültig gemacht wird.

  • Fehler behoben issue453: Das Ergebnis des pytest_assertrepr_compare Hooks erhält nun neuartige Zeilen, damit format_exception nicht fehlschlägt.

  • internes neues Warnsystem: pytest wird nun Warnungen ausgeben, wenn es Merkwürdigkeiten bei der Sammlung oder Ausführung Ihrer Tests feststellt. Warnungen werden letztendlich an einen neuen pytest_logwarning Hook gesendet, der derzeit nur vom Terminal-Plugin implementiert wird, das Warnungen in der Zusammenfassungszeile anzeigt und weitere Details anzeigt, wenn -rw (Bericht über Warnungen) angegeben ist.

  • Änderung von skips in Warnungen für Testklassen mit einer __init__ und aufrufbaren Elementen in Testmodulen, die wie ein Test aussehen, aber keine Funktionen sind.

  • Fehler behoben issue436: Verbesserte Suche nach initialen conftest-Dateien aus Befehlszeilenargumenten durch Verwendung des Ergebnisses von parse_known_args anstelle der bisherigen fehlerhaften Heuristiken. Vielen Dank an Marc Abramowitz für Tests und erste Fehlerbehebungsansätze in diesem Bereich.

  • Fehler behoben issue #479: Korrekte Behandlung von Nose/Unittest(2) SkipTest-Ausnahmen während der Sammlung/Laden von Testmodulen. Dank an Marc Schlaich für den vollständigen PR.

  • Fehler behoben issue490: Einbeziehung von pytest_load_initial_conftests in die Dokumentation und Verbesserung der Docstrings.

  • Fehler behoben issue472: Klarstellung, dass pytest.config.getvalue() nicht funktionieren kann, wenn es vor dem Parsen der Befehlszeile ausgelöst wird.

  • zusammengeführt PR123: Verbesserte Integration mit dem mock.patch-Decorator für Tests.

  • Fehler behoben issue412: Das Manipulieren von stdout/stderr FD-Ebene Streams wird jetzt ohne Abstürze erfasst.

  • Fehler behoben issue483: Trial/py33 funktioniert jetzt ordnungsgemäß. Vielen Dank an Daniel Grana für den PR.

  • Verbessertes Beispiel für die Integration von pytest mit „python setup.py test“, das nun eine generische Option „-a“ oder „–pytest-args“ hat, mit der Sie zusätzliche Optionen als Zeichenkette übergeben können. Vielen Dank an Trevor Bekolay.

  • vereinfachter interner Erfassungsmechanismus und robuster gegen Tests oder Setups, die FD1/FD2 ändern, besser integriert jetzt auch mit pytest.pdb() in einzelnen Tests.

  • Verbesserungen an pytest's eigener Test-Suite-Leckageerkennung, dank PRs von Marc Abramowitz

  • Fehler behoben issue492: Vermeidung von Lecks in test_writeorg. Vielen Dank an Marc Abramowitz.

  • Fehler behoben issue493: Keine Tests im doc-Verzeichnis mit python setup.py test ausführen (verwenden Sie dafür tox -e doctesting)

  • Fehler behoben issue486: Bessere Berichterstattung und Handhabung von Fehlern beim frühen Laden von conftest

  • einige Bereinigungen und Vereinfachungen der internen conftest-Handhabung.

  • etwas härteres Arbeiten, um Referenzzyklen beim Abfangen von Ausnahmen zu brechen. Vielen Dank an Jurko Gospodnetic.

  • Fehler behoben issue443: Beispiele für skip korrigieren, um richtige Vergleiche zu verwenden. Vielen Dank an Alex Groenholm.

  • Unterstützung für Nose-Stil __test__ Attribut auf Modulen, Klassen und Funktionen, einschließlich Unittest-Stil-Klassen. Wenn auf False gesetzt, wird der Test nicht gesammelt.

  • Fehler behoben issue512: Zeigen Sie „<nicht gesetzt>“ für Argumente an, die im monkeypatch-Plugin möglicherweise nicht gesetzt sind. Verbessert die Ausgabe in der Dokumentation.

  • Vermeiden Sie den Import von „py.test“ (ein altes Alias-Modul für „pytest“)