Скриптът по-долу описва как постигате това, което търсите в ReadyAPI / SoapUI
. Имайте предвид, че вече знаете как да се свържете с gmongo
в Groovy, което трябва да добавите тази логика в контейнера, като следвате коментара в ред.
По-долу е Setup Script
на ниво тестов пакет за създаване на db връзка.
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
}
По-долу е нивото на тестовия пакет TearDown Script
за да затворите db връзката. Тъй като това е в скрипта за разрушаване, връзката се затваря автоматично веднага щом завърши изпълнението на тестовия пакет .
testSuite.db?.closeConnection()
Сега не е необходимо да правите стъпки, за да създавате db връзката отново и отново. Просто трябва да използвате скрипта по-долу в Groovy Script
тестова стъпка за получаване на съществуващата db връзка .
def conn = context.testCase.testSuite.db?.connection
Използване на conn
променлива, трябва да можете да изпълнявате заявките.
Забележка: Тъй като db връзката се извършва в Setup Script
на тестов пакет, ако просто изпълните тестовия случай (т.е. тестовият пакет не се извиква или изпълнява), може да не успеете да получите връзката. В такива случаи изпълнете ръчно Setup Script
от тестовия пакет.
РЕДАКТИРАНЕ: Въз основа на редакцията на OP на въпроса и неговия кодов фрагмент, тук е Setup Script
на актуализирания тестов пакет . Това се грижи за внедряването на getConnection()
и closeConnection()
въз основа на редакцията на OP. Моля, добавете/редактирайте изрази за импортиране за класове Mongo, които се използват, тъй като не съм наясно с тях.
Актуализиран скрипт за настройка на пакета за тестване
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
}
Както споменахме по-рано, за да получите връзката, използвайте кода по-долу и го обяснете.
context.testCase.testSuite.db?.connection
Groovy има страхотна функция, наречена ExpandoMetaclass. db
се инжектира в testSuite
клас и db
е обект на DatabaseDetails
клас, който създадохме и инстанцирахме в Setup Script
от тестовия пакет.
И db
съдържа getConnection()
т.е. db.getConnection()
което също може да бъде същото като db.connection
. Ето как става връзката е наличен в горното изявление.