Poniższy skrypt opisuje, jak osiągnąć to, czego szukasz w ReadyAPI / SoapUI
. Pamiętaj, że wiesz już, jak połączyć się z gmongo
w Groovy, do którego musisz dodać tę logikę w symbolu zastępczym, podążając za komentarzem w wierszu.
Poniżej znajduje się Setup Script
na poziomie zestawu testów aby utworzyć połączenie z bazą danych.
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
}
Poniżej znajduje się TearDown Script
na poziomie zestawu testów aby zamknąć połączenie z bazą danych. Ponieważ jest to w skrypcie do usuwania, połączenie jest zamykane automatycznie po zakończeniu wykonywania zestawu testów .
testSuite.db?.closeConnection()
Teraz nie ma potrzeby ciągłego tworzenia połączenia z bazą danych. Wystarczy użyć poniższego skryptu w Groovy Script
krok testowy, aby uzyskać istniejące połączenie z bazą danych .
def conn = context.testCase.testSuite.db?.connection
Korzystanie z conn
zmienna, powinieneś być w stanie wykonać zapytania.
Uwaga: Ponieważ połączenie z bazą danych odbywa się w Setup Script
zestawu testów, jeśli po prostu uruchomisz przypadek testowy (tj. Zestaw testów nie zostanie wywołany lub wykonany), możesz nie być w stanie uzyskać połączenia. W takich przypadkach ręcznie uruchom Setup Script
zestawu testów.
EDYTUJ: Na podstawie dokonanej przez OP edycji pytania i jego fragmentu kodu, oto zaktualizowany Setup Script
pakietu testowego . To zajmuje się implementacją getConnection()
i closeConnection()
na podstawie edycji OP. Dodaj / edytuj instrukcje importu dla klas Mongo, które są używane, ponieważ nie jestem tego świadomy.
Zaktualizowany skrypt instalacyjny pakietu 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
}
Jak wspomniano wcześniej, aby uzyskać połączenie, użyj poniższego kodu i wyjaśnij go.
context.testCase.testSuite.db?.connection
Groovy ma świetną funkcję o nazwie ExpandoMetaclass. db
jest wstrzykiwany do testSuite
class i db
jest obiektem DatabaseDetails
klasę, którą utworzyliśmy i stworzyliśmy w Setup Script
zestawu testów.
I db
zawiera getConnection()
np. db.getConnection()
który może być również taki sam jak db.connection
. W ten sposób połączenie jest dostępny w powyższym oświadczeniu.