Gibt es eine Möglichkeit, die internen Abwertungswarnungen des Pytests zu unterdrücken?
Kontext: Ich möchte die Schwierigkeit der Portierung einer Testsuite von nose
nach bewerten pytest
. Die Suite ist ziemlich groß und verwendet stark Testgeneratoren im nose
Stil yield
.
Ich möchte zuerst sicherstellen, dass die vorhandenen Tests mit pytest bestanden werden, und dann möglicherweise die Testgeneratoren auf ändern parameterized
.
Nur $ pytest path-to-test-folder
mit pytest 3.0.4 zu laufen, wird vollständig von Seiten und Seiten von dominiert
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Gibt es eine Möglichkeit, diese Warnungen auszuschalten?
pytest -p no:warnings
, oder fügen Sie Ihrer pytest.ini oder tox.ini Folgendes hinzu:Das Ergebnis ist grün ohne Hinweis auf Warnungen. Siehe Dokumentation unter https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary .
Dies kann ein gültiger Anwendungsfall für eine Testsuite sein, in der Sie eine saubere Ausgabe wünschen.
Beachten Sie, dass das Ausblenden aller Warnungen dazu führen kann, dass Sie wichtige Warnungen verpassen. Wenn Sie nur bestimmte Warnungen ausblenden möchten, lesen Sie die Antwort von Cloc .
quelle
addopts = -p no:warnings
ist eine WIRKLICH SCHLECHTE Idee, und die CloC-Lösung ist viel vernünftiger, aber ich musste Ihre verwenden, wenn sieignore::InsecureRequestWarning
nicht erkannt wurde, sodass Sie auch +1 erhaltenIch denke, Sie möchten nicht alle Warnungen verbergen, sondern nur diejenigen, die nicht relevant sind. In diesem Fall Warnungen vor Korrekturen von importierten Python-Modulen.
Lesen Sie die Pytest-Dokumentation zu Warnings Capture :
So können Sie Warnungen mit der Python-
-W
Option filtern !Es scheint, dass
pytest
Filter vollständig entfernt werden, da alle dieseDeprecationWarning
beim Ausführen angezeigt werden. In der Python-Dokumentation zu Standardwarnfiltern heißt es eindeutig:Wenn Sie also beispielsweise
DeprecationWarning
Warntypen filtern möchten, die Sie ignorieren möchten, z. B. diese , führen Sie einfach den Befehl pytest mit der folgenden-W
Option aus:EDIT : Von Colini ‚s Kommentar, ist es möglich, Filter durch das Modul. Beispiel zum Ignorieren von Verfallswarnungen aus allen SQLalchemies:
Sie können dann Ihre installierten Module auflisten, die zu viel Rauschen in der Ausgabe von erzeugen
pytest
Verwenden Sie mit Datei anstatt in der Befehlszeile:
Möglicherweise möchten Sie diese Filter lieber in der Datei pytest.ini auflisten:
quelle
ignore::DeprecationWarning:sqlalchemy.*:
Ich möchte nicht alle Warnungen verbergen, also habe ich dies eingegeben
pytest.ini
quelle
In der Datei pytest.ini können Sie Folgendes hinzufügen:
ODER unter der Zeile in der Befehlszeile. Dies kann nützlich sein, wenn Ihre Testsuiten Warnungen über ein externes System verarbeiten.
ODER wenn Sie nur eine bestimmte veraltete Warnung ausblenden möchten, fügen Sie die folgende Anweisung in Ihre Datei pytest.ini ein
Dadurch werden alle Warnungen vom Typ DeprecationWarning ignoriert, bei denen der Start der Nachricht mit dem regulären Ausdruck ". * U. * -Modus ist veraltet" übereinstimmt.
ODER Obwohl nicht empfohlen, können Sie die verwenden
Befehlszeilenoption zum vollständigen Unterdrücken der Warnungszusammenfassung aus der Testlaufausgabe.
quelle