sql >> Database >  >> NoSQL >> MongoDB

Maak een mongo-verbinding en maak deze tot leven voor uitvoering van een volledige testsuite in Ready!API

Onderstaand script adres hoe je bereikt wat je zoekt in ReadyAPI / SoapUI . Merk op dat je al weet hoe je verbinding moet maken met gmongo in Groovy die je nodig hebt om die logica in de plaatshouder toe te voegen door de opmerking inline te volgen.

Hieronder vindt u het Setup Script op testsuiteniveau om de db-verbinding te maken.

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 
}

Hieronder staat het TearDown Script op testsuiteniveau om de db-verbinding te sluiten. Aangezien dit een afbreekscript is, wordt de verbinding automatisch gesloten zodra de uitvoering van de testsuite is voltooid .

testSuite.db?.closeConnection()

Nu is er geen stap meer nodig om de db-verbinding steeds opnieuw te maken. U hoeft alleen het onderstaande script te gebruiken in Groovy Script teststap om de bestaande db-verbinding te krijgen .

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

conn gebruiken variabele, zou je de queries moeten kunnen uitvoeren.

Opmerking: Aangezien de db-verbinding wordt gemaakt in Setup Script van testsuite, als u alleen de testcase uitvoert (d.w.z. de testsuite wordt niet aangeroepen of uitgevoerd), kunt u mogelijk geen verbinding krijgen. Voer in dergelijke gevallen handmatig het Setup Script uit van de testsuite.

BEWERKEN: Gebaseerd op OP's bewerking van de vraag en zijn codefragment, hier is het Setup Script van de bijgewerkte testsuite . Dit zorgt voor de implementatie van getConnection() en closeConnection() gebaseerd op de bewerking van OP. Voeg a.u.b. importstatements toe voor Mongo-klassen die worden gebruikt, aangezien ik daar niet echt van op de hoogte ben.

Update van het installatiescript van 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 
}

Zoals eerder vermeld, om de verbinding te krijgen, gebruikt u onderstaande code en legt u deze uit.

context.testCase.testSuite.db?.connection

Groovy heeft een geweldige functie genaamd ExpandoMetaclass. db wordt geïnjecteerd in testSuite class en db is object van DatabaseDetails klasse die we hebben gemaakt en geïnstantieerd in Setup Script van testsuite.

En db bevat getConnection() d.w.z. db.getConnection() wat ook hetzelfde kan zijn als db.connection . Zo verbinding is beschikbaar in de bovenstaande verklaring.




  1. Javers ENTITY_INSTANCE_WITH_NULL_ID bij gebruik van 2 databases

  2. MongoDB $ slice (ingesloten array-paging)

  3. MongoDB met redis

  4. mangoest | Middleware | Rollback-bewerkingen uitgevoerd door pre/post hooks wanneer er een fout wordt gegenereerd