下面的脚本解决了您如何在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
使用conn
变量,您应该能够执行查询。
注意:由于数据库连接是在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()
ie,db.getConnection()
也可以和db.connection
. 这就是上述语句中可用连接的方式。