下面的脚本解决了您如何实现您想要的目标ReadyAPI / SoapUI
。请注意,您已经知道如何连接到gmongo
在 Groovy 中,您需要通过内联注释在占位符中添加该逻辑。
以下是测试套件级别Setup Script
创建数据库连接。
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
关闭数据库连接。由于这是在拆卸脚本中,测试套件执行完成后连接会自动关闭.
testSuite.db?.closeConnection()
现在,不需要一次又一次地创建数据库连接。
你只需要使用下面的脚本Groovy Script
测试步骤获取现有的数据库连接.
def conn = context.testCase.testSuite.db?.connection
Using conn
变量,您应该能够执行查询。
Note :由于数据库连接是在Setup Script
对于测试套件,如果您只是运行测试用例(即未调用或执行测试套件),您可能无法获得连接。在这种情况下,请手动执行Setup Script
测试套件的。
EDIT:根据OP对问题和他的代码片段的编辑,这里是更新的测试套件Setup Script
。这负责实施getConnection()
and 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
测试套件。
And db
包含getConnection()
i.e., db.getConnection()
这也可以与db.connection
。就是那样联系可以在上面的语句中找到。