6.0+30
Integration mit Robot Framework
Einführung
Robot Framework ist ein sehr beliebtes Framework zur Testautomatisierung und robotergesteuerten Prozessautomatisierung (Robotic Process Automation - RPA). Es basiert auf Python und kommt mit einer Vielzahl an gebrauchsfertigen Bibliotheken für diverse Testszenarien. Meist wird die Entscheidung zwischen entweder QF-Test oder Robot Framework fallen, aber es gibt Situationen für welche die Integration absolut Sinn ergibt: Wenn Sie einerseits bereits existierende Infrastruktur für Robot Framework haben oder Tester in Ihrem Team über Spezialwissen zu Robot Framework verfügen und andererseits die besonderen Fähigkeiten von QF-Test in der UI-Automatisierung benötigen.
Voraussetzungen und Installation
Es muss eine aktuelle Version von Python 3 installiert sein.
Falls noch nicht vorhanden, kann Robot Framework via pip install robotframework
installiert werden. Es wird
Robot Framework Version 4 oder höher benötigt.
Die Integration benötigt eine Brücke zwischen Python und Java. JPype erfüllt diese Rolle ausgezeichnet. Es muss via pip
install JPype1
installiert werden.
QF-Test enthält eine Robot Framework Bibliothek namens qftest
, die Robot Framework bekannt gemacht werden muss. Sie befindet
sich im Verzeichnis .../qftest-9.0.0/ext/robotframework
. Sie können entweder dieses
Verzeichnis zu Ihrer PYTHONPATH Environment Variable hinzufügen, oder eine Datei namens
qftest_robot.pth
in den site-packages Ihrer Python 3 Installation anlegen - also
.../python3/Lib/site-packages/qftest_robot.pth
- die genau eine Zeile enthält: Den vollständigen
Pfad zu diesem Verzeichnis.
Erste Schritte
Robot Framework kommuniziert mit dem QF-Test Daemon, daher müssen Sie zunächst QF-Test, wie in Kapitel 55 beschrieben, mit aktiviertem Daemon-Modus starten. Zum Erstellen von Tests ist es ideal, den interaktiven Daemon-Modus zu nutzen, da Sie dann den QF-Test Debugger aktiveren und dazu nutzen können, auf der Ebene von QF-Test in Einzelschritten durch Ihre Keywords zu gehen, unabhängig von und in Ergänzung zu dem Debugger der IDE, mit der Sie Ihre Robot Framework-Skripte ausführen. Starten Sie also bitte QF-Test von der Kommandozeile mit
qftest -daemon -daemonport 5454 -keystore=
Port 5454 ist nur ein Beispiel, Sie können diesen beliebig wählen, müssen ihn aber, wie unten beschrieben, in Ihrer robot Datei angeben.
Wie beim Kommandozeilenargument -keystore <Keystore-Datei>
beschrieben, dient -keystore=
dazu, den Daemon
ohne abgesicherte Kommunikation zu starten, was den Verbindungsaufbau beschleunigt und für den internen
Gebrauch auf Ihrer Maschine akzeptabel sein sollte. Das dritte Argument der qftest Bibliothek muss in diesem
Fall "false" sein und "true", wenn ein Keystore genutzt wird.
Bevor Sie Ihre eigenen Robot Framework Tests mit QF-Test erstellen, sollten Sie zunächst das mit QF-Test bereitgestellte
Demo-Skript ausführen, um sicherzustellen, dass Ihre Umgebung vollständig eingerichtet ist. Es befindet sich
im Verzeichnis .../qftest-9.0.0/demo/robotframework
. Bitte wechseln Sie dorthin und
führen Sie folgenden Befehl aus:
robot carconfigSwing_de.robot
Dieses Skript sollte die Swing Carconfig Demo-Anwendung starten und darin ein paar Klicks und Checks durchführen. Wenn Sie dieses mehrfach ausführen sehen Sie einen weiteren großen Vorteil dieser Integration: Durch die Nutzung des QF-Test Daemon zum Start den Anwendung wird deren Lebensdauer unabhängig von der des Python Prozesses, der das Robot Framework-Skript ausführt. Es können also weitere Skripte ausgeführt werden und die bereits laufende Anwendung nutzen - dank des QF-Test Konzepts von Abhängigkeiten (Abschnitt 42.3) trotzdem immer in einem definierten Zustand.
SmartIDs (vgl. Abschnitt 5.6) sind ideal zur Angabe der Zielkomponenten von Robot Framework Keywords
geeignet. Leider leitet das führende '#'-Zeichen von SmartIDs in Robot Framework einen Kommentar ein, so dass dieses
immer geschützt werden müsste, was die Lesbarkeit stark beeinträchtigt. Es gibt aber eine
Option in QF-Test, nach deren Aktivieren jede Referenz auf eine Bemerkung auch ohne führendes '#' implizit als
SmartID behandelt wird, sofern kein Komponente Knoten mit dieser ID existiert.
Da diese spezifisch für Robot Framework ist, kann Sie nur auf Skriptebene aktiviert werden, wie in der Prozedur "use
smartids without marker" der robot.qft
Demo-Testsuite gezeigt:
rc.setOption(Options.OPT_SMARTID_WITHOUT_MARKER, true)
Nutzung der Bibliothek
Wie Sie der Datei resource.txt
im Robot Framework Demo-Verzeichnis entnehmen können, muss die
qftest
Bibliothek wie folgt initialisiert werden:
Library qftest localhost 5454 false ${SUITE}
Die Argumente sind optional. Die ersten drei legen Host und Port für den zu kontaktierenden QF-Test Daemon fest und
ob ein Keystore verwendet werden soll oder nicht. Das vierte hat den Standardwert robot.qft
und bezeichnet die primäre Testsuite zur Ermittlung der Keywords, die Robot Framework nutzen kann.
Erstellung eigener Keywords
Die Keywords für Robot Framework werden ermittelt, indem die primäre Testsuite, die als Argument bei der Definition der Library angegeben wurde, zusammen mit allen direkt oder indirekt per include referenzierten Testsuiten durchgegangen wird.
Hierbei wird das @keyword Doctag genutzt, um eine Prozedur oder eine ganze Package Hierarchie als Keyword festzulegen. Details hierzu finden Sie in Abschnitt 62.2.