MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Erstellen Sie eine Mongo-Verbindung und aktivieren Sie sie für die Ausführung einer gesamten Testsuite in Ready!API

Das folgende Skript beschreibt, wie Sie in ReadyAPI / SoapUI erreichen, wonach Sie suchen . Beachten Sie, dass Sie bereits wissen, wie Sie sich mit gmongo verbinden In Groovy müssen Sie diese Logik in den Platzhalter einfügen, indem Sie dem Kommentar inline folgen.

Unten ist das Setup Script auf Ebene der Testsuite um die DB-Verbindung herzustellen.

class DatabaseDetails {
    def server
    def user
    def password
    def log
    def getConnection() {
        log.info 'connection created'
        //Write logic to create connection
    }
    def closeConnection() {
        log.info 'Closing connection'
        //Write logic to close connection
    }
}
//Change server, user, password values according to your environment
def db = [ server:'localhost', user:'dbuser', password: 'dbuserpasswd', log: log] as DatabaseDetails
if (!db.connection) {
    db.connection
    testSuite.metaClass.db = db 
}

Unten ist das TearDown Script auf Ebene der Testsuite um die DB-Verbindung zu schließen. Da es sich um ein Teardown-Skript handelt, wird die Verbindung automatisch geschlossen, sobald die Ausführung der Testsuite abgeschlossen ist .

testSuite.db?.closeConnection()

Jetzt ist es nicht mehr nötig, die DB-Verbindung immer wieder neu zu erstellen. Sie müssen nur das folgende Skript in Groovy Script verwenden Testschritt, um die vorhandene DB-Verbindung abzurufen .

def conn = context.testCase.testSuite.db?.connection

Mit conn Variable, sollten Sie in der Lage sein, die Abfragen auszuführen.

Hinweis: Da die DB-Verbindung im Setup Script erfolgt der Testsuite, wenn Sie nur den Testfall ausführen (d. h. die Testsuite wird nicht aufgerufen oder ausgeführt), können Sie möglicherweise keine Verbindung herstellen. Führen Sie in solchen Fällen das Setup Script manuell aus der Testsuite.

BEARBEITEN: Basierend auf der Bearbeitung der Frage durch OP und seinem Codeausschnitt ist hier das Setup Script der aktualisierten Testsuite . Dies kümmert sich um die Implementierung von getConnection() und closeConnection() basierend auf der Bearbeitung von OP. Bitte fügen Sie Importanweisungen für verwendete Mongo-Klassen hinzu / bearbeiten Sie sie, da mir diese nicht wirklich bekannt sind.

Aktualisiertes Setup-Skript der Test Suite

import com.gmongo.*
import com.mongodb.*

class DatabaseDetails {
    def context
    def log
    def mongoClient
    def mongoDB
    def getConnection() {
        log.info 'Creating connection.'
        //Write logic to create connection
        if (!mongoDB){        
        def credentials = MongoCredential.createCredential(
           context.expand('${#Project#MongoUser}'),
           context.expand('${#Project#MongoDatabase}'),
           context.expand('${#Project#MongoPassword}') as char[])
        mongoClient = new MongoClient( new ServerAddress(context.expand('${#Project#MongoServer}')),Arrays.asList(credentials) ) 
        mongoDB = new GMongo( mongoClient ).getDB(context.expand('${#Project#MongoDatabase}'))          
      }
      mongoDB
    }

    def closeConnection() {
        log.info 'Closing connection'
        //Write logic to close connection
        mongoClient.close()
    }
}

def db = [ context: context, log: log] as DatabaseDetails
if (!db.connection) {
    db.connection
    testSuite.metaClass.db = db 
}

Wie bereits erwähnt, verwenden Sie zum Herstellen der Verbindung den folgenden Code und erklären ihn unten.

context.testCase.testSuite.db?.connection

Groovy hat ein großartiges Feature namens ExpandoMetaclass. db wird in testSuite eingefügt Klasse und db ist Objekt von DatabaseDetails Klasse, die wir im Setup Script erstellt und instanziiert haben der Testsuite.

Und db enthält getConnection() d.h. db.getConnection() was auch dasselbe sein kann wie db.connection . So entsteht Verbindung ist in der obigen Anweisung verfügbar.