Integration mit Robot Framework (Preview)

6.0+Preview Die Robot Framework Integration ist zwar bereits voll funktionsfähig, befindet sich aber aus folgenden zwei Gründen noch im Preview-Stadium: Sie basiert wesentlich auf SmartIDs (vgl. Abschnitt 5.6), die ihrerseits noch ein Preview-Feature sind und es gibt noch keine vorgefertigten Robot Framework Keyword-Bibliotheken für QF-Test, so dass Sie ihre eigenen erstellen müssen (was, wie unten beschrieben, sehr einfach geht).

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-6.0.4/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 52 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-6.0.4/demo/robotframework. Bitte wechseln Sie dorthin und führen Sie folgenden Befehl aus:

robot carconfig_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 39.3) trotzdem immer in einem definierten Zustand.

Preview 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 noch inoffizielle 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. Bis diese Option offiziell verfügbar wird, kann Sie 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 59.2.