Nedan skript adresserar hur du uppnår det du letar efter i ReadyAPI / SoapUI
. Observera att du redan vet hur du ansluter till gmongo
i Groovy som du behöver för att lägga till den logiken i platshållaren genom att följa kommentaren inline.
Nedan är testsvitnivån Setup Script
för att skapa db-anslutningen.
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
}
Nedan är testsvitnivån TearDown Script
för att stänga db-anslutningen. Eftersom detta är ett rivningsskript, stänger anslutningen automatiskt så snart körningen av testsviten är klar .
testSuite.db?.closeConnection()
Nu behöver du inte ha något steg för att skapa db-anslutningen om och om igen. Du behöver bara använda nedanstående skript i Groovy Script
teststeg för att få den befintliga db-anslutningen .
def conn = context.testCase.testSuite.db?.connection
Använder conn
variabel, bör du kunna köra frågorna.
Obs! Eftersom db-anslutningen görs i Setup Script
av testsviten, om du bara kör testfallet (dvs. testsviten inte anropas eller körs), kanske du inte kan få anslutningen. I sådana fall kör du manuellt Setup Script
av testsviten.
EDIT: Baserat på OP:s redigering av frågan och hans kodavsnitt, här är den uppdaterade testsvitens Setup Script
. Detta tar hand om implementeringen av getConnection()
och closeConnection()
baserat på OP:s redigering. Vänligen lägg till / redigera importsatser för Mongo-klasser som används eftersom jag inte riktigt är medveten om dem.
Uppdaterat Test Suites installationsskript
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
}
Som nämnts tidigare, för att få anslutningen, använd nedanstående kod och förklara det.
context.testCase.testSuite.db?.connection
Groovy har en fantastisk funktion som heter ExpandoMetaclass. db
injiceras till testSuite
klass och db
är föremål för DatabaseDetails
klass som vi skapade och instansierade i Setup Script
av testsviten.
Och db
innehåller getConnection()
dvs. db.getConnection()
vilket också kan vara samma som db.connection
. Det är hur anslutning finns i ovanstående uttalande.