MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създайте mongo връзка и я оживете за изпълнение на цял тестов пакет в Ready!API

Скриптът по-долу описва как постигате това, което търсите в ReadyAPI / SoapUI . Имайте предвид, че вече знаете как да се свържете с gmongo в Groovy, което трябва да добавите тази логика в контейнера, като следвате коментара в ред.

По-долу е Setup Script на ниво тестов пакет за създаване на 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 
}

По-долу е нивото на тестовия пакет TearDown Script за да затворите db връзката. Тъй като това е в скрипта за разрушаване, връзката се затваря автоматично веднага щом завърши изпълнението на тестовия пакет .

testSuite.db?.closeConnection()

Сега не е необходимо да правите стъпки, за да създавате db връзката отново и отново. Просто трябва да използвате скрипта по-долу в Groovy Script тестова стъпка за получаване на съществуващата db връзка .

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

Използване на conn променлива, трябва да можете да изпълнявате заявките.

Забележка: Тъй като db връзката се извършва в Setup Script на тестов пакет, ако просто изпълните тестовия случай (т.е. тестовият пакет не се извиква или изпълнява), може да не успеете да получите връзката. В такива случаи изпълнете ръчно Setup Script от тестовия пакет.

РЕДАКТИРАНЕ: Въз основа на редакцията на OP на въпроса и неговия кодов фрагмент, тук е Setup Script на актуализирания тестов пакет . Това се грижи за внедряването на getConnection() и closeConnection() въз основа на редакцията на OP. Моля, добавете/редактирайте изрази за импортиране за класове Mongo, които се използват, тъй като не съм наясно с тях.

Актуализиран скрипт за настройка на пакета за тестване

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 
}

Както споменахме по-рано, за да получите връзката, използвайте кода по-долу и го обяснете.

context.testCase.testSuite.db?.connection

Groovy има страхотна функция, наречена ExpandoMetaclass. db се инжектира в testSuite клас и db е обект на DatabaseDetails клас, който създадохме и инстанцирахме в Setup Script от тестовия пакет.

И db съдържа getConnection() т.е. db.getConnection() което също може да бъде същото като db.connection . Ето как става връзката е наличен в горното изявление.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoimport на JSON файл

  2. MongoExport Твърде много позиционни опции

  3. Как да се свържете с mongodb с помощта на docker-compose?

  4. Как да направя заявка към mongodb от groovy/grails?

  5. MongoDB $indexOfCP