MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Utwórz połączenie mongo i ożyw je do wykonania całego zestawu testowego w Ready!API

Poniższy skrypt opisuje, jak osiągnąć to, czego szukasz w ReadyAPI / SoapUI . Pamiętaj, że wiesz już, jak połączyć się z gmongo w Groovy, do którego musisz dodać tę logikę w symbolu zastępczym, podążając za komentarzem w wierszu.

Poniżej znajduje się Setup Script na poziomie zestawu testów aby utworzyć połączenie z bazą danych.

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 
}

Poniżej znajduje się TearDown Script na poziomie zestawu testów aby zamknąć połączenie z bazą danych. Ponieważ jest to w skrypcie do usuwania, połączenie jest zamykane automatycznie po zakończeniu wykonywania zestawu testów .

testSuite.db?.closeConnection()

Teraz nie ma potrzeby ciągłego tworzenia połączenia z bazą danych. Wystarczy użyć poniższego skryptu w Groovy Script krok testowy, aby uzyskać istniejące połączenie z bazą danych .

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

Korzystanie z conn zmienna, powinieneś być w stanie wykonać zapytania.

Uwaga: Ponieważ połączenie z bazą danych odbywa się w Setup Script zestawu testów, jeśli po prostu uruchomisz przypadek testowy (tj. Zestaw testów nie zostanie wywołany lub wykonany), możesz nie być w stanie uzyskać połączenia. W takich przypadkach ręcznie uruchom Setup Script zestawu testów.

EDYTUJ: Na podstawie dokonanej przez OP edycji pytania i jego fragmentu kodu, oto zaktualizowany Setup Script pakietu testowego . To zajmuje się implementacją getConnection() i closeConnection() na podstawie edycji OP. Dodaj / edytuj instrukcje importu dla klas Mongo, które są używane, ponieważ nie jestem tego świadomy.

Zaktualizowany skrypt instalacyjny pakietu 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 
}

Jak wspomniano wcześniej, aby uzyskać połączenie, użyj poniższego kodu i wyjaśnij go.

context.testCase.testSuite.db?.connection

Groovy ma świetną funkcję o nazwie ExpandoMetaclass. db jest wstrzykiwany do testSuite class i db jest obiektem DatabaseDetails klasę, którą utworzyliśmy i stworzyliśmy w Setup Script zestawu testów.

I db zawiera getConnection() np. db.getConnection() który może być również taki sam jak db.connection . W ten sposób połączenie jest dostępny w powyższym oświadczeniu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zrozumienie zmian w nowym sterowniku MongoDB C# (Async i Await)

  2. Czy MongoDB i jego sterowniki mogą zachować kolejność elementów dokumentu?

  3. Jak wyszukiwać tekst w mgo?

  4. Jak ponownie wykorzystać połączenie mongodb za pośrednictwem Promise

  5. Harmonogram zdarzeń (cronjob) w MongoDB?