Nedenstående script adresserer, hvordan du opnår det, du leder efter i ReadyAPI / SoapUI . Bemærk, at du allerede ved, hvordan du opretter forbindelse til gmongo i Groovy, som du skal tilføje den logik i pladsholderen ved at følge kommentaren inline.
Nedenfor er testsuiteniveauet Setup Script for at oprette db-forbindelsen.
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
}
Nedenfor er testsuiteniveauet TearDown Script for at lukke db-forbindelsen. Da dette er et rive-script, lukkes forbindelsen automatisk, så snart udførelse af testpakken er fuldført .
testSuite.db?.closeConnection()
Nu er der ingen grund til at have trin til at oprette db-forbindelsen igen og igen. Du skal bare bruge nedenstående script i Groovy Script testtrin for at hente den eksisterende db-forbindelse .
def conn = context.testCase.testSuite.db?.connection
Bruger conn variabel, bør du være i stand til at udføre forespørgslerne.
Bemærk: Da db-forbindelsen er udført i Setup Script af testpakken, hvis du bare kører testcasen (dvs. testpakken bliver ikke påkaldt eller udført), kan du muligvis ikke få forbindelsen. I sådanne tilfælde skal du manuelt udføre Setup Script af testpakken.
EDIT: Baseret på OP's redigering af spørgsmålet og hans kodestykke, her er den opdaterede testsuites Setup Script . Dette tager sig af implementeringen af getConnection() og closeConnection() baseret på OP's redigering. Tilføj/rediger venligst importerklæringer for Mongo-klasser, der bruges, da jeg ikke rigtig er klar over dem.
Opdateret Test Suite's opsætningsscript
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ævnt tidligere, for at få forbindelsen, skal du bruge nedenstående kode og forklare det ned.
context.testCase.testSuite.db?.connection
Groovy har en fantastisk funktion kaldet ExpandoMetaclass. db er injiceret til testSuite klasse og db er objekt for DatabaseDetails klasse, som vi oprettede og instansierede i Setup Script af testsuite.
Og db indeholder getConnection() dvs. db.getConnection() som også kan være det samme som db.connection . Sådan er forbindelse er tilgængelig i ovenstående erklæring.