La siguiente secuencia de comandos explica cómo lograr lo que está buscando en ReadyAPI / SoapUI . Tenga en cuenta que ya sabe cómo conectarse a gmongo en Groovy, que debe agregar esa lógica en el marcador de posición siguiendo el comentario en línea.
A continuación se muestra el nivel del conjunto de pruebas Setup Script para crear la conexión 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
}
A continuación se muestra el nivel del conjunto de pruebas TearDown Script para cerrar la conexión db. Dado que esto está en el script de desmontaje, la conexión se cierra automáticamente tan pronto como se completa la ejecución del conjunto de pruebas .
testSuite.db?.closeConnection()
Ahora, no es necesario tener un paso para crear la conexión db una y otra vez. Solo necesita usar el siguiente script en Groovy Script paso de prueba para obtener la conexión de base de datos existente .
def conn = context.testCase.testSuite.db?.connection
Usando conn variable, debería poder ejecutar las consultas.
Nota: Dado que la conexión db se realiza en Setup Script del conjunto de pruebas, si solo ejecuta el caso de prueba (es decir, el conjunto de pruebas no se invoca ni ejecuta), es posible que no pueda obtener la conexión. En tales casos, ejecute manualmente el Setup Script del conjunto de pruebas.
EDITAR: Basado en la edición de OP a la pregunta y su fragmento de código, aquí está el Setup Script del conjunto de pruebas actualizado . Esto se encarga de la implementación de getConnection() y closeConnection() basado en la edición de OP. Agregue / edite declaraciones de importación para las clases de Mongo que se utilizan, ya que no estoy realmente al tanto de ellas.
Script de configuración de Test Suite actualizado
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
}
Como se mencionó anteriormente, para obtener la conexión, use el siguiente código y explíquelo.
context.testCase.testSuite.db?.connection
Groovy tiene una gran característica llamada ExpandoMetaclass. db se inyecta a testSuite clase y db es objeto de DatabaseDetails clase que creamos e instanciamos en Setup Script del conjunto de pruebas.
Y db contiene getConnection() es decir, db.getConnection() que también puede ser igual a db.connection . Así es como conexión está disponible en la declaración anterior.