Momentan arbeite ich an der Einführung des Robot Framework für automatisierte Web-Tests bei einem unserer Kunden. Neben dem Robot Framework werden wir auch die SeleniumLibrary and RIDE einsetzen. Diese Tool-Sammlung wird allen Entwicklerteams im Unternehmen zur Verfügung gestellt werden.
Da unser Kunde ein eigenes Framework zur Entwicklung von Web-Applikationen einsetzt, entwickeln wir eine eigene Keyword-Bibliothek, die einerseits von Details des Frameworks abstrahiert und anderseits den Zugriff auf die SelenimLibrary kapselt (um bei einem potentiellen Austausch nicht alle Testfälle in allen Teams ändern zu müssen). Diese Keyword-Bibliothek wird als Robot Resource-Datei von allen Entwicklerteams in ihren Tests eingebunden. Daher ist eine gute Dokumentation notwendig.
Nehmen wir an, ein Keyword Starte Anwendung wäre wie folgt definiert und dokumentiert:
Die Dokumentation unterstützt den Entwickler nicht nur beim Arbeiten mit der RIDE …
… sie wird auch verwendet, um eine HTML-Seite mit der allen Keywords zu generieren, etwa so wie die BuiltIn Dokumentation.
Das Library Documentation Tool libdoc
Das Library Documentation Tool erledigt die Arbeit für uns. Für Java-Entwickler, die nicht allzu sehr mit Robot und Python vertraut sind: libdoc.py kann in etwa mit JavaDoc verglichen werden. Die Benutzung ist einfach:
1python libdoc.py YourKeywordlib.html
Details zum Aufruf findet man in der libdoc Dokumentation. Die Syntax der Dokmentation (Formatierung, Tabellen, etc.) wird im User Guide des Robot Frameworks beschrieben.
Build Integration
Der Build-Prozess des Kunden basiert auf ant
. Daher habe ich für die Erzeugung der Dokumentation einen ant-Task geschrieben, dessen Details ich im Folgenden erläutern möchte. Zuerst schreiben wir ein Macro zum Aufruf von Python:
1<property name="python.runtime" value="/dev/Python27/python.exe" /> 2... 3<macrodef name="run-python"> 4 <attribute name="script"/> 5 <attribute name="arguments"/> 6 <sequential> 7 <echo>-------------------------------------------------- 8Python : ${python.runtime} 9Script : @{script} 10Arguments: @{arguments} 11--------------------------------------------------</echo> 12 <exec executable="${python.runtime}" failonerror="true"> 13 <arg value="@{script}" /> 14 <arg line="@{arguments}"/> 15 </exec> 16 </sequential> 17</macrodef>
Um den ant-Task wiederverwendbar zu halten, verwenden wir folgende Properties, die ggfs. beim Aufruf überschrieben werden können:
1<!-- folder to store documentation into --> 2<property name="doc.folder" value="./doc"/> 3<!-- keywords to document --> 4<property name="doc.keywords" value="CustomKeywordLib.html"/> 5<!-- path to libdoc tool --> 6<property name="python.libdoc" value="../python/libdoc-2.5.7.py" />
Der Task selbst gestaltet sich dann sehr einfach:
1<target name="generate-keyword-documentation"> 2 <mkdir dir="${doc.folder}"/> 3 <run-python 4 script="${python.libdoc}" 5 arguments="-f HTML -o ${doc.folder}/${doc.keywords} ${doc.keywords}" 6 /> 7</target>
Seine Ausführung …
1Buildfile: C:\dev\workspaces\blog\robotdoc\src\robot\robot-build.xml 2generate-keyword-documentation: 3 [echo] -------------------------------------------------- 4 [echo] Python : /dev/Python27/python.exe 5 [echo] Script : ../python/libdoc-2.5.7.py 6 [echo] Arguments: -f HTML -o ./doc/CustomKeywordLib.html CustomKeywordLib.html 7 [echo] -------------------------------------------------- 8 [exec] CustomKeywordLib -> C:\dev\workspaces\blog\robotdoc\src\robot\doc\CustomKeywordLib.html 9BUILD SUCCESSFUL 10Total time: 2 seconds
… erzeugt die gewünschte aggregierte Sicht auf alle Keywords in Form einer HTML-Datei:
Weitere Beiträge
von Tobias Trelle
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Tobias Trelle
Software Architect
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.