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

Opret en mongoforbindelse, og gør den levende til udførelse af en hel testpakke i Ready!API

Nedenstående script adresserer, hvordan du opnår det, du leder efter i ReadyAPI / SoapUI . Bemærk, at du allerede ved, hvordan du opretter forbindelse til gmongo i Groovy, som du skal tilføje den logik i pladsholderen ved at følge kommentaren inline.

Nedenfor er testsuiteniveauet Setup Script for at oprette db-forbindelsen.

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 
}

Nedenfor er testsuiteniveauet TearDown Script for at lukke db-forbindelsen. Da dette er et rive-script, lukkes forbindelsen automatisk, så snart udførelse af testpakken er fuldført .

testSuite.db?.closeConnection()

Nu er der ingen grund til at have trin til at oprette db-forbindelsen igen og igen. Du skal bare bruge nedenstående script i Groovy Script testtrin for at hente den eksisterende db-forbindelse .

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

Bruger conn variabel, bør du være i stand til at udføre forespørgslerne.

Bemærk: Da db-forbindelsen er udført i Setup Script af testpakken, hvis du bare kører testcasen (dvs. testpakken bliver ikke påkaldt eller udført), kan du muligvis ikke få forbindelsen. I sådanne tilfælde skal du manuelt udføre Setup Script af testpakken.

EDIT: Baseret på OP's redigering af spørgsmålet og hans kodestykke, her er den opdaterede testsuites Setup Script . Dette tager sig af implementeringen af ​​getConnection() og closeConnection() baseret på OP's redigering. Tilføj/rediger venligst importerklæringer for Mongo-klasser, der bruges, da jeg ikke rigtig er klar over dem.

Opdateret Test Suite's opsætningsscript

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ævnt tidligere, for at få forbindelsen, skal du bruge nedenstående kode og forklare det ned.

context.testCase.testSuite.db?.connection

Groovy har en fantastisk funktion kaldet ExpandoMetaclass. db er injiceret til testSuite klasse og db er objekt for DatabaseDetails klasse, som vi oprettede og instansierede i Setup Script af testsuite.

Og db indeholder getConnection() dvs. db.getConnection() som også kan være det samme som db.connection . Sådan er forbindelse er tilgængelig i ovenstående erklæring.




  1. render_template med flere variabler

  2. Hvordan kan jeg flade dobbelte arrays i mongoDB?

  3. Node.js mongoose ydeevne

  4. Administrer Python Multiprocessing med MongoDB