sql >> Databáze >  >> NoSQL >> MongoDB

Vytvořte mongo připojení a oživte jej pro provádění celé testovací sady v Ready!API

Níže uvedený skript uvádí, jak dosáhnete toho, co hledáte v ReadyAPI / SoapUI . Všimněte si, že již víte, jak se připojit k gmongo v Groovy, které musíte přidat tuto logiku do zástupného symbolu podle vloženého komentáře.

Níže je Setup Script na úrovni testovací sady k vytvoření připojení 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 
}

Níže je TearDown Script na úrovni testovací sady pro ukončení připojení db. Vzhledem k tomu, že se jedná o skript ve strženém stavu, připojení se automaticky uzavře, jakmile se dokončí spuštění testovací sady .

testSuite.db?.closeConnection()

Nyní již není potřeba znovu a znovu vytvářet připojení db. Stačí použít níže uvedený skript v Groovy Script testovací krok k získání stávajícího připojení db .

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

Pomocí conn proměnnou, měli byste být schopni provádět dotazy.

Poznámka: Protože připojení k databázi se provádí v Setup Script testovací sady, pokud právě spustíte testovací případ (tj. testovací sada není vyvolána nebo spuštěna), nemusí se vám připojení podařit. V takových případech ručně spusťte Setup Script testovací sady.

UPRAVIT: Na základě úprav otázky a úryvku kódu ze strany OP, zde je Setup Script aktualizované testovací sady . To se stará o implementaci getConnection() a closeConnection() na základě úpravy OP. Přidejte/upravte prosím importní příkazy pro třídy Mongo, které se používají, protože si jich opravdu nejsem vědom.

Aktualizovaný skript nastavení testovací sady

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 
}

Jak již bylo zmíněno dříve, k získání připojení použijte níže uvedený kód a vysvětlete jej.

context.testCase.testSuite.db?.connection

Groovy má skvělou funkci s názvem ExpandoMetaclass. db je vložen do testSuite class a db je objekt DatabaseDetails třídu, kterou jsme vytvořili a vytvořili v Setup Script testovací sady.

A db obsahuje getConnection() tj. db.getConnection() což může být stejné jako db.connection . To je způsob připojení je k dispozici ve výše uvedeném prohlášení.




  1. MongoDB se nerovná

  2. jak získat klíče, které neodpovídají konkrétnímu vzoru v redis?

  3. elemMatch v kombinaci s dalšími poli dotazu v Mongoose

  4. Způsobí nastavení slave-read-only no ne, způsobí, že slave potvrdí každé vyhledávání hash s hlavním?