Di seguito lo script indica come ottenere ciò che stai cercando in ReadyAPI / SoapUI
. Nota che sai già come connetterti a gmongo
in Groovy a cui devi aggiungere quella logica nel segnaposto seguendo il commento in linea.
Di seguito è riportato il Setup Script
a livello di suite di test per creare la connessione 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
}
Di seguito è riportato il TearDown Script
a livello di suite di test per chiudere la connessione db. Poiché questo è in uno script di smontaggio, la connessione viene chiusa automaticamente non appena l'esecuzione della suite di test è completata .
testSuite.db?.closeConnection()
Ora, non c'è bisogno di avere un passaggio per creare la connessione db ancora e ancora. Devi solo usare lo script sotto in Groovy Script
passaggio di prova per ottenere la connessione db esistente .
def conn = context.testCase.testSuite.db?.connection
Usando conn
variabile, dovresti essere in grado di eseguire le query.
Nota : Poiché la connessione db viene eseguita in Setup Script
di test suite, se esegui semplicemente il test case (ovvero, test suite non viene richiamato o eseguito), potresti non essere in grado di ottenere la connessione. In questi casi, eseguire manualmente lo Setup Script
della suite di test.
MODIFICA: Sulla base della modifica di OP alla domanda e del suo frammento di codice, ecco lo Setup Script
della suite di test aggiornato . Questo si occupa dell'implementazione di getConnection()
e closeConnection()
in base alla modifica di OP. Si prega di aggiungere/modificare le istruzioni di importazione per le classi Mongo che vengono utilizzate perché non ne sono realmente a conoscenza.
Script di installazione aggiornato di 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
}
Come accennato in precedenza, per ottenere la connessione, utilizzare il codice seguente e spiegarlo.
context.testCase.testSuite.db?.connection
Groovy ha un'ottima funzionalità chiamata ExpandoMetaclass. db
viene iniettato in testSuite
classe e db
è oggetto di DatabaseDetails
classe che abbiamo creato e istanziato in Setup Script
di test suite.
E db
contiene getConnection()
cioè, db.getConnection()
che può anche essere db.connection
. Ecco come connessione è disponibile nella dichiarazione di cui sopra.