Kann ich mehrere Behauptungen in pytest?
Ich bin mit pytest für meine selenium tests und wollte wissen, ob es möglich ist, mehrere Aussagen in einem einzigen test?
Rufe ich eine Funktion, vergleicht mehrere Werte und ich möchte den test-Bericht über alle Werte, die nicht übereinstimmen. Das problem das ich habe ist, dass mit "behaupten" oder "pytest.fail" beendet den test, sobald es feststellt, ein Wert, der nicht mit bis.
Gibt es eine Möglichkeit, um die Prüfung zu machen, tragen auf dem Laufenden und berichten über alle Werte, die nicht übereinstimmen?
- Kannst du nicht einfach bauen eine Liste von Fehlern, dann behaupten die Liste leer ist?
- Ich möchte Berichte über einzelne Fehler aber so, dass in dem Bericht gibt er mir eine Liste der Werte, die nicht übereinstimmen
- Umm... wie funktioniert der Aufbau einer Liste die nicht passt, dann behauptet, dass die Liste leer ist (bei Fehler wird es nicht sein) - du erhälst dann die Liste als eine "erwartete [] - got [1, 2, 7, 10]` oder etwas nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Jon Clements kommentiert, können Sie füllen Sie eine Liste der Fehlermeldungen und dann behaupten die Liste leer ist, wird die Anzeige jede Nachricht, wenn die Behauptung falsch ist.
konkret, es könnte etwas sein wie:
Den ursprünglichen Behauptungen sind ersetzt durch
if
Aussagen, die anfügen von Nachrichten an eineerrors
Liste, im Falle dass Bedingung nicht erfüllt.Dann behaupten Sie die
errors
Liste leer ist (eine leere Liste False) machen und die Geltendmachung Nachricht enthält jede Nachricht dererrors
Liste.Könnten Sie auch machen Sie einen test-generator, beschrieben in den Nase-Dokumentation. Ich fand keine pytest doc, die es beschreibt, aber ich weiß, dass pytest behandelt genau die gleiche Art und Weise wie Nase.
pytest-übernehmen Sie ist "ein pytest plugin, das es erlaubt, mehrere Ausfälle pro test". Hier ist ein Beispiel, wie Sie es verwenden würde (aus der
README
):Obwohl einige der Behauptungen, die scheitern, werden Sie alle erhalten, ausgewertet und gemeldet:
Hier ist ein alternativer Ansatz, der sogenannte Verzögert geltend machen, Es ist ziemlich ähnlich zu dem, was @Tryph zur Verfügung gestellt hat, und gibt besseren stack-trace.
Den verspätet-geltend machen Paket auf PyPI implementiert diesen Ansatz. Siehe auch die pr4bh4sh/python-verspätet-geltend machen repository auf GitHub, oder die Installation von PyPI mit:
Können Sie (möglicherweise) eine assertion-Bibliothek in Kombination mit python-verspätet-geltend zu machen. Betrachten Sie es eher wie ein stack-trace-manager-Bibliothek eher als eine Behauptung. Überprüfen Sie diese zum Beispiel nutzt
Dies ist, wie die Fehler-stack trace sieht,
pip install https://github.com/pr4bh4sh/python-delayed-assert
doch eine Bibliothek durch den Autor der 2017 Pragmatische Buch auf pytest, Brian Okken.
https://pythontesting.net/books/pytest/
https://github.com/okken/pytest-check