MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Crie uma conexão mongo e torne-a ativa para execução de um conjunto de testes inteiro no Ready!API


O script abaixo aborda como você consegue o que está procurando em ReadyAPI / SoapUI . Observe que você já sabe como se conectar ao gmongo no Groovy que você precisa adicionar essa lógica no espaço reservado seguindo o comentário inline.

Abaixo está o nível do conjunto de testes Setup Script para criar a conexão 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 
}

Abaixo está o nível do conjunto de testes TearDown Script para fechar a conexão db. Como isso está no script de desmontagem, a conexão é fechada automaticamente assim que a execução do conjunto de testes é concluída .
testSuite.db?.closeConnection()

Agora, não há necessidade de ter passo para criar a conexão db novamente. Você só precisa usar o script abaixo em Groovy Script etapa de teste para obter a conexão db existente .
def conn = context.testCase.testSuite.db?.connection

Usando conn variável, você deve ser capaz de executar as consultas.

Observação: Como a conexão db é feita em Setup Script do conjunto de testes, se você acabou de executar o caso de teste (ou seja, o conjunto de testes não é invocado ou executado), talvez você não consiga obter a conexão. Nesses casos, execute manualmente o Setup Script da suíte de testes.

EDITAR: Com base na edição do OP para a pergunta e seu snippet de código, aqui está o Setup Script do conjunto de testes atualizado . Isso cuida da implementação de getConnection() e closeConnection() baseado na edição do OP. Por favor, adicione / edite instruções de importação para as classes Mongo que são usadas, pois não estou realmente ciente delas.

Script de configuração do Test Suite atualizado
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 mencionado anteriormente, para obter a conexão, use o código abaixo e explique-o.
context.testCase.testSuite.db?.connection

Groovy tem um ótimo recurso chamado ExpandoMetaclass. db é injetado no testSuite classe e db é objeto de DatabaseDetails classe que criamos e instanciamos em Setup Script do conjunto de testes.

E db contém getConnection() ou seja, db.getConnection() que também pode ser igual a db.connection . É assim que a conexão está disponível na declaração acima.