//

MongoDB für den Roboter

6.6.2013 | 2 Minuten Lesezeit

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

1*** Settings ***
2Library de.codecentric.robot.mongodblibrary.keywords.MongodbLibrary
3Test Setup Setup MongoDB
4 
5*** Test Cases ***
6should insert given document
7     Insert Document myCollection {say : 'Hello MongoDb!'}
8     Collection Should Exist myCollection
9     Document Should Exist myCollection {say : 'Hello MongoDb!'}
10 
11*** Keywords ***
12Setup MongoDB
13     Connect To Server localhost 27020 robotdb1
14     Drop Database robotdb1
15

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.

1*** Settings ***
2Library   Remote    http://localhost:8270
3Test Setup Setup MongoDB
4 
5*** Test Cases ***
6should insert given document
7     Insert Document myCollection {say : 'Hello MongoDb!'}
8     Collection Should Exist myCollection
9     Document Should Exist myCollection {say : 'Hello MongoDb!'}
10 
11*** Keywords ***
12Setup MongoDB
13     Connect To Server localhost 27020 robotdb1
14     Drop Database robotdb1
15

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

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

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.

1*** Settings ***
2Library de.codecentric.robot.mongodblibrary.keywords.MongodbLibrary
3Suite Setup  Startup Embedded  2.4.4
4Suite TearDown  Shutdown Embedded
5Test Setup Setup MongoDB
6 
7*** Test Cases ***
8should insert given document
9     Insert Document myCollection {say : 'Hello MongoDb!'}
10     Collection Should Exist myCollection
11     Document Should Exist myCollection {say : 'Hello MongoDb!'}
12 
13*** Keywords ***
14Setup MongoDB
15     Connect To Server localhost 27020 robotdb1
16     Drop Database robotdb1
17

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:

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 🙂

Beitrag teilen

Gefällt mir

0

//

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.