MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Crea una connessione mongo e rendila attiva per l'esecuzione di un'intera suite di test in Ready!API

Di seguito lo script indica come ottenere ciò che stai cercando in ReadyAPI / SoapUI . Nota che sai già come connetterti a gmongo in Groovy a cui devi aggiungere quella logica nel segnaposto seguendo il commento in linea.

Di seguito è riportato il Setup Script a livello di suite di test per creare la connessione db.

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 
}

Di seguito è riportato il TearDown Script a livello di suite di test per chiudere la connessione db. Poiché questo è in uno script di smontaggio, la connessione viene chiusa automaticamente non appena l'esecuzione della suite di test è completata .

testSuite.db?.closeConnection()

Ora, non c'è bisogno di avere un passaggio per creare la connessione db ancora e ancora. Devi solo usare lo script sotto in Groovy Script passaggio di prova per ottenere la connessione db esistente .

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

Usando conn variabile, dovresti essere in grado di eseguire le query.

Nota : Poiché la connessione db viene eseguita in Setup Script di test suite, se esegui semplicemente il test case (ovvero, test suite non viene richiamato o eseguito), potresti non essere in grado di ottenere la connessione. In questi casi, eseguire manualmente lo Setup Script della suite di test.

MODIFICA: Sulla base della modifica di OP alla domanda e del suo frammento di codice, ecco lo Setup Script della suite di test aggiornato . Questo si occupa dell'implementazione di getConnection() e closeConnection() in base alla modifica di OP. Si prega di aggiungere/modificare le istruzioni di importazione per le classi Mongo che vengono utilizzate perché non ne sono realmente a conoscenza.

Script di installazione aggiornato di 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 
}

Come accennato in precedenza, per ottenere la connessione, utilizzare il codice seguente e spiegarlo.

context.testCase.testSuite.db?.connection

Groovy ha un'ottima funzionalità chiamata ExpandoMetaclass. db viene iniettato in testSuite classe e db è oggetto di DatabaseDetails classe che abbiamo creato e istanziato in Setup Script di test suite.

E db contiene getConnection() cioè, db.getConnection() che può anche essere db.connection . Ecco come connessione è disponibile nella dichiarazione di cui sopra.