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.