MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Créez une connexion mongo et rendez-la active pour l'exécution d'une suite de tests complète dans Ready!API

Le script ci-dessous explique comment vous obtenez ce que vous recherchez dans ReadyAPI / SoapUI . Notez que vous savez déjà comment vous connecter à gmongo dans Groovy dont vous avez besoin pour ajouter cette logique dans l'espace réservé en suivant le commentaire en ligne.

Ci-dessous le niveau de la suite de tests Setup Script pour créer la connexion à la base de données.

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 
}

Ci-dessous le niveau de la suite de tests TearDown Script pour fermer la connexion db. Comme il s'agit d'un script de démontage, la connexion se ferme automatiquement dès que l'exécution de la suite de tests est terminée .

testSuite.db?.closeConnection()

Maintenant, il n'est plus nécessaire d'avoir une étape pour créer la connexion db encore et encore. Il vous suffit d'utiliser le script ci-dessous dans Groovy Script étape de test pour obtenir la connexion à la base de données existante .

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

Utiliser conn variable, vous devriez pouvoir exécuter les requêtes.

Remarque : Étant donné que la connexion à la base de données est effectuée dans Setup Script de la suite de tests, si vous exécutez simplement le cas de test (c'est-à-dire que la suite de tests n'est pas invoquée ou exécutée), vous ne pourrez peut-être pas obtenir la connexion. Dans ce cas, exécutez manuellement le Setup Script de la suite de tests.

MODIF : Sur la base de la modification de la question par OP et de son extrait de code, voici le Setup Script de la suite de tests mise à jour . Cela prend en charge l'implémentation de getConnection() et closeConnection() basé sur l'édition d'OP. Veuillez ajouter/modifier les déclarations d'importation pour les classes Mongo qui sont utilisées car je ne suis pas vraiment au courant de celles-ci.

Script de configuration de la suite de tests mis à jour

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 
}

Comme mentionné précédemment, pour obtenir la connexion, utilisez le code ci-dessous et expliquez-le.

context.testCase.testSuite.db?.connection

Groovy a une grande fonctionnalité appelée ExpandoMetaclass. db est injecté dans testSuite classe et db est l'objet de DatabaseDetails classe que nous avons créée et instanciée dans Setup Script de la suite de tests.

Et db contient getConnection() c'est-à-dire db.getConnection() qui peut également être identique à db.connection . C'est ainsi que la connexion est disponible dans la déclaration ci-dessus.