2017-09-21 3 views
0

Ich habe einen Python-Test, der möglicherweise viele Warnungen generiert. Wenn der Test beendet ist, möchte ich eine Ausnahme auslösen, wenn Warnungen vorhanden sind.Warte auf Python-Warnungen und raise Exception

Es ist wichtig, den Test bis zum Ende auszuführen und dann zu erhöhen, da ich einen Remote-Build-Bot verwende und alle Warnungen gleichzeitig anzeigen möchte.

Wie mache ich das?

+0

Verwenden Sie das Warnmodul? https://docs.python.org/3.6/library/warnings.html?highlight=warnings#module-warnings – WombatPM

+0

Ja, aber ich fand es nicht so einfach, das zu finden. –

Antwort

0

Ich fragte das gestern aber fand die Antwort später, alleine. Die Technik ist interessant und ich möchte es teilen.

Wenn ein Modul Warnungen mit dem Warnungsmodul erstellt, speichert es diese Warnungen in einer speziellen Variable, die die gesehenen Warnungen enthält. In meinem Fall gibt das Parser-Modul Warnungen aus. Ich einfach lassen Sie es seine übliche Arbeit tun, und am Ende des Tests kommt:

if hasattr(parser, "__warningregistry__"): 
    raise RuntimeError("There are errors, see above.") 

Auf diese Weise habe ich zu meinem Parser nicht in irgendeiner Weise zu ändern, aber am Ende des Laufes, ich bekomme eine Ausnahme, und ich habe alle Warnungen verfügbar. Dann kann ich alle Fälle beheben und einen weiteren Lauf des Build-Bot starten.

Verwandte Themen