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.