MongoDB für den Roboter

Keine Kommentare

Wir setzen das Robot Framework seit geraumer Zeit für automatisierte Softwaretests in unseren Projekten ein. Außerdem beschäftigen sich ein paar meiner Kollegen mit der NoSql Datenbank MongoDB (Tutorial über MongoDB). Die Dokumenten-Management-Lösung Center-Device (Start-Up-Unternehmen der Codecentric AG) setzt ebenfalls im Back-End auf MongoDB (Center-Device Architektur-Überblick). Da dachte ich mir: Es ist Zeit für eine neue Robot-Library: robotframework-mongodblibrary. Die Version 0.2.1 steht als download auf GitHub bereit (Keyword-Dokumentation).

Die Bibliothek ist in Java (Jython) geschrieben und verwendet intern den MongoDB Java Treiber. Das Programmieren der Library war trotz geringer Vorerfahrung dank der guten MongoDB-Dokumentation sehr einfach 🙂

Der erste Robot-Test

*** Settings ***
Library de.codecentric.robot.mongodblibrary.keywords.MongodbLibrary
Test Setup Setup MongoDB
 
*** Test Cases ***
should insert given document
     Insert Document myCollection {say : 'Hello MongoDb!'}
     Collection Should Exist myCollection
     Document Should Exist myCollection {say : 'Hello MongoDb!'}
 
*** Keywords ***
Setup MongoDB
     Connect To Server localhost 27020 robotdb1
     Drop Database robotdb1

Robot Remote Library

Auch die Robot-Remote-Bibliothek ist schon mit an Board 🙂 Dann kann man die Bibliothek auch als eigenen Server starten. Sehr nüzlich, wenn man beispielsweise den Haupt-Test mit Python anstatt Jython starten möchte.

*** Settings ***
Library   Remote    http://localhost:8270
Test Setup Setup MongoDB
 
*** Test Cases ***
should insert given document
     Insert Document myCollection {say : 'Hello MongoDb!'}
     Collection Should Exist myCollection
     Document Should Exist myCollection {say : 'Hello MongoDb!'}
 
*** Keywords ***
Setup MongoDB
     Connect To Server localhost 27020 robotdb1
     Drop Database robotdb1

vor der Testausführung muß natürlich noch der Server gestartet werden:

java -jar build/libs/robotframework-mongodblibrary-0.2.1-with-dependencies.jar --port 8270

MongoDB-Server Embedded

Ein neues Feature seit der Version 0.2 ist das Starten eines MongoDB-Servers (in einer bestimmten Version) innerhalb der Tests, hierfür wird die Embedded MongoDB Bibliothek verwendet. Das Keyword lädt den Server von der MongoDB-Seite herunter, entpackt diesen ins Home-Verzeichnis und startet anschließend den MongoDB-Daemon in einem eigenen Betriebssystem-Prozess (MongoDB ist in C++ geschrieben). Beim Beenden der Test-Suite sollte das Keyword Shutdown Embedded verwendet werden, um die Datenbank sauber herunterzufahren.

*** Settings ***
Library de.codecentric.robot.mongodblibrary.keywords.MongodbLibrary
Suite Setup  Startup Embedded  2.4.4
Suite TearDown  Shutdown Embedded
Test Setup Setup MongoDB
 
*** Test Cases ***
should insert given document
     Insert Document myCollection {say : 'Hello MongoDb!'}
     Collection Should Exist myCollection
     Document Should Exist myCollection {say : 'Hello MongoDb!'}
 
*** Keywords ***
Setup MongoDB
     Connect To Server localhost 27020 robotdb1
     Drop Database robotdb1

Der Hauptvorteil der Server-Integration liegt in der Übersichtlichkeit der Robot-Logdateien, die MongoDB-Logmeldungen werden direkt ins Robot-Log geschrieben und können so dem jeweiligen Keyword zugeordnet werden:

embeddedServer

Verwendung in anderen Test-Frameworks

Die Bibliothek hat keinerlei Abhängigkeiten zum Robot-Framework und kann deswegen auch in anderen Test-Frameworks (z.B. Junit, JBehave) verwendet werden. Hierfür gibt es eine Download-Version ohne Abhängigkeiten.

Viel Spaß mit der Bibliothek 🙂

max.hartmann

Max Hartmann ist seit 2011 als Senior IT Consultant bei der codecentric tätig. Aufgrund seiner langjährigen Erfahrung als Entwickler und Architekt verfügt er über ein umfassendes Java-Wissen. Max unterstützt seine Kunden schwerpunktmäßig in den Bereichen Architektur und Massendatenverarbeitung. Momentan beschäftigt er sich ebenfalls mit Client-/Java-Script-Architekturen, und sein besonderes Interesse gilt zur Zeit der dynamischen JVM-Sprache Clojure.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.