Onderstaand script adres hoe je bereikt wat je zoekt in ReadyAPI / SoapUI
. Merk op dat je al weet hoe je verbinding moet maken met gmongo
in Groovy die je nodig hebt om die logica in de plaatshouder toe te voegen door de opmerking inline te volgen.
Hieronder vindt u het Setup Script
op testsuiteniveau om de db-verbinding te maken.
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
}
Hieronder staat het TearDown Script
op testsuiteniveau om de db-verbinding te sluiten. Aangezien dit een afbreekscript is, wordt de verbinding automatisch gesloten zodra de uitvoering van de testsuite is voltooid .
testSuite.db?.closeConnection()
Nu is er geen stap meer nodig om de db-verbinding steeds opnieuw te maken. U hoeft alleen het onderstaande script te gebruiken in Groovy Script
teststap om de bestaande db-verbinding te krijgen .
def conn = context.testCase.testSuite.db?.connection
conn
gebruiken variabele, zou je de queries moeten kunnen uitvoeren.
Opmerking: Aangezien de db-verbinding wordt gemaakt in Setup Script
van testsuite, als u alleen de testcase uitvoert (d.w.z. de testsuite wordt niet aangeroepen of uitgevoerd), kunt u mogelijk geen verbinding krijgen. Voer in dergelijke gevallen handmatig het Setup Script
uit van de testsuite.
BEWERKEN: Gebaseerd op OP's bewerking van de vraag en zijn codefragment, hier is het Setup Script
van de bijgewerkte testsuite . Dit zorgt voor de implementatie van getConnection()
en closeConnection()
gebaseerd op de bewerking van OP. Voeg a.u.b. importstatements toe voor Mongo-klassen die worden gebruikt, aangezien ik daar niet echt van op de hoogte ben.
Update van het installatiescript van 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
}
Zoals eerder vermeld, om de verbinding te krijgen, gebruikt u onderstaande code en legt u deze uit.
context.testCase.testSuite.db?.connection
Groovy heeft een geweldige functie genaamd ExpandoMetaclass. db
wordt geïnjecteerd in testSuite
class en db
is object van DatabaseDetails
klasse die we hebben gemaakt en geïnstantieerd in Setup Script
van testsuite.
En db
bevat getConnection()
d.w.z. db.getConnection()
wat ook hetzelfde kan zijn als db.connection
. Zo verbinding is beschikbaar in de bovenstaande verklaring.