sql >> Databasteknik >  >> NoSQL >> MongoDB

Skapa en mongo-anslutning och gör den levande för exekvering av en hel testsvit i Ready!API

Nedan skript adresserar hur du uppnår det du letar efter i ReadyAPI / SoapUI . Observera att du redan vet hur du ansluter till gmongo i Groovy som du behöver för att lägga till den logiken i platshållaren genom att följa kommentaren inline.

Nedan är testsvitnivån Setup Script för att skapa db-anslutningen.

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 
}

Nedan är testsvitnivån TearDown Script för att stänga db-anslutningen. Eftersom detta är ett rivningsskript, stänger anslutningen automatiskt så snart körningen av testsviten är klar .

testSuite.db?.closeConnection()

Nu behöver du inte ha något steg för att skapa db-anslutningen om och om igen. Du behöver bara använda nedanstående skript i Groovy Script teststeg för att få den befintliga db-anslutningen .

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

Använder conn variabel, bör du kunna köra frågorna.

Obs! Eftersom db-anslutningen görs i Setup Script av testsviten, om du bara kör testfallet (dvs. testsviten inte anropas eller körs), kanske du inte kan få anslutningen. I sådana fall kör du manuellt Setup Script av testsviten.

EDIT: Baserat på OP:s redigering av frågan och hans kodavsnitt, här är den uppdaterade testsvitens Setup Script . Detta tar hand om implementeringen av getConnection() och closeConnection() baserat på OP:s redigering. Vänligen lägg till / redigera importsatser för Mongo-klasser som används eftersom jag inte riktigt är medveten om dem.

Uppdaterat Test Suites installationsskript

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 
}

Som nämnts tidigare, för att få anslutningen, använd nedanstående kod och förklara det.

context.testCase.testSuite.db?.connection

Groovy har en fantastisk funktion som heter ExpandoMetaclass. db injiceras till testSuite klass och db är föremål för DatabaseDetails klass som vi skapade och instansierade i Setup Script av testsviten.

Och db innehåller getConnection() dvs. db.getConnection() vilket också kan vara samma som db.connection . Det är hur anslutning finns i ovanstående uttalande.




  1. Mongo-skalet kan inte ansluta till Azure CosmosDB

  2. Bästa sättet att representera flerspråkig databas på mongodb

  3. Hantera långvarig verksamhet i MongoDB

  4. Kopiera första matrisvärdet till ett annat fält i MongoDB