Ich habe eine Roboter-Framework-Testsuite, die eine Python-Methode aufruft. Ich möchte, dass diese Python-Methode eine Nachricht an die Konsole zurückgibt, ohne den Test zu beenden. Speziell versuche ich einen Prozess zu zeit.
Ich kann "raise" verwenden, um eine Nachricht an die Konsole zu senden, aber gleichzeitig wird der Test nicht bestanden.
%Vor%Oder ich kann "print" verwenden, um eine Nachricht an die Protokolldatei zurückzugeben und zu berichten, ohne den Test zu unterbrechen, aber diese Information ist nur im Bericht verfügbar, nicht in der Konsole.
%Vor%Wenn ich die Option "Drucken" verwende, bekomme ich Folgendes:
%Vor%Was ich will ist das:
%Vor%Da Sie Python verwenden, haben Sie zwei einfache Möglichkeiten:
Schreiben Sie Ihre Nachrichten in die stderr
. Diese Nachrichten werden sowohl in die Log-Datei von Robot als auch in die Konsole geschrieben. Eine Einschränkung besteht darin, dass die Nachrichten erst dann zur Konsole gelangen, wenn das von Ihnen ausgeführte Keyword beendet ist. Ein Vorteil ist, dass dieser Ansatz auch mit Java-basierten Bibliotheken funktioniert.
Schreiben Sie Ihre Nachrichten in Python nach sys.__stdout__
. Der Roboter fängt nur sys.stdout
und sys.stderr
ab und lässt sys.__stdout__
(und sys.__stderr__
) alleine (wie alle Python-Programme, die sich gut benehmen). Diese Nachrichten enden nur auf der Konsole, aber Sie können sie auch in sys.stdout
schreiben, um sie auch in die Protokolldatei zu bekommen.
Sie können die robot.api-Bibliothek verwenden. Dies ist das Dokument für die Bibliothek
Lassen Sie Ihre lib eine Zeichenkette zurück und verwenden Sie Set Test Message
, um sie anzuzeigen.
ref: Ссылка
Aktualisierungen:
Log To Console
gibt Ausgaben an die Konsole in Echtzeit aus (d. h. während der Testausführung, im Gegensatz zu Set Test Message
, die nur am Ende des Testfalls ausgegeben werden.) Tags und Links python frameworks automated-tests robotframework