sql >> Base de Datos >  >> NoSQL >> MongoDB

Cree una conexión mongo y hágala viva para la ejecución de un conjunto de pruebas completo en Ready!API

La siguiente secuencia de comandos explica cómo lograr lo que está buscando en ReadyAPI / SoapUI . Tenga en cuenta que ya sabe cómo conectarse a gmongo en Groovy, que debe agregar esa lógica en el marcador de posición siguiendo el comentario en línea.

A continuación se muestra el nivel del conjunto de pruebas Setup Script para crear la conexión 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 
}

A continuación se muestra el nivel del conjunto de pruebas TearDown Script para cerrar la conexión db. Dado que esto está en el script de desmontaje, la conexión se cierra automáticamente tan pronto como se completa la ejecución del conjunto de pruebas .

testSuite.db?.closeConnection()

Ahora, no es necesario tener un paso para crear la conexión db una y otra vez. Solo necesita usar el siguiente script en Groovy Script paso de prueba para obtener la conexión de base de datos existente .

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

Usando conn variable, debería poder ejecutar las consultas.

Nota: Dado que la conexión db se realiza en Setup Script del conjunto de pruebas, si solo ejecuta el caso de prueba (es decir, el conjunto de pruebas no se invoca ni ejecuta), es posible que no pueda obtener la conexión. En tales casos, ejecute manualmente el Setup Script del conjunto de pruebas.

EDITAR: Basado en la edición de OP a la pregunta y su fragmento de código, aquí está el Setup Script del conjunto de pruebas actualizado . Esto se encarga de la implementación de getConnection() y closeConnection() basado en la edición de OP. Agregue / edite declaraciones de importación para las clases de Mongo que se utilizan, ya que no estoy realmente al tanto de ellas.

Script de configuración de Test Suite actualizado

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 
}

Como se mencionó anteriormente, para obtener la conexión, use el siguiente código y explíquelo.

context.testCase.testSuite.db?.connection

Groovy tiene una gran característica llamada ExpandoMetaclass. db se inyecta a testSuite clase y db es objeto de DatabaseDetails clase que creamos e instanciamos en Setup Script del conjunto de pruebas.

Y db contiene getConnection() es decir, db.getConnection() que también puede ser igual a db.connection . Así es como conexión está disponible en la declaración anterior.