887 Stimmen

Wie kann ich die normale Druckausgabe sehen, die während eines Pytestlaufs erzeugt wird?

Manchmal möchte ich einfach nur ein paar Druckanweisungen in meinen Code einfügen und sehen, was ausgedruckt wird, wenn ich sie ausführe. Normalerweise "übe" ich das mit bestehenden pytest-Tests. Aber wenn ich diese ausführe, scheine ich nicht in der Lage zu sein, eine Standardausgabe zu sehen (zumindest aus PyCharm, meiner IDE).

Gibt es eine einfache Möglichkeit, die Standardausgabe während eines Pytestlaufs zu sehen?

5voto

sage Punkte 4490

Wenn Sie Folgendes verwenden logging müssen Sie angeben, dass Sie die Protokollierungsausgabe zusätzlich zu -s für generisches stdout. Basierend auf Protokollierung innerhalb von pytest-Tests verwende ich:

pytest --log-cli-level=DEBUG -s my_directory/

4voto

Gemini Jain Punkte 61

Wenn Sie die PyCharm-IDE verwenden, können Sie diesen einzelnen Test oder alle Tests mit der Symbolleiste Ausführen ausführen. Das Fenster des Ausführungswerkzeugs zeigt die von Ihrer Anwendung erzeugte Ausgabe an, und Sie können dort alle Druckanweisungen als Teil der Testausgabe sehen.

3voto

Alex Kosh Punkte 1516

Wenn jemand Tests aus dem Code mit Ausgabe ausführen möchte:

if __name__ == '__main__':
    pytest.main(['--capture=no'])

0voto

lubo Punkte 3

Die Fixtures capsys, capsysbinary, capfd und capfdbinary ermöglichen den Zugriff auf stdout/stderr-Ausgaben, die während der Testausführung. Hier ein Beispiel für eine Testfunktion, die einige ausgabebezogene Prüfungen durchführt:

def test_print_something_even_if_the_test_pass(self, capsys):
    text_to_be_printed = "Print me when the test pass."
    print(text_to_be_printed)
    p_t = capsys.readouterr()
    sys.stdout.write(p_t.out)
    # the two rows above will print the text even if the test pass.

Hier ist das Ergebnis:

test_print_something_even_if_the_test_pass PASSED [100%]Druckt mich, wenn der Test bestanden wurde.

0voto

Pytest <test_file.py> -s -> ist die beste Antwort auf diese Frage. Wenn Sie die Werte einer Variablen oder das Ergebnis einer Funktion oder etwas Ähnliches sehen wollen, während Sie pytest ausführen, müssen Sie nur die Anweisung print in die Funktion einfügen, die Sie prüfen wollen, und diesen Befehl ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X