创建一个 mongo 连接并使其处于活动状态,以便在 Ready 中执行整个测试套件!API
Create a mongo connection and make it alive for execution of an Entire Test Suite in Ready!API
如果您想为整个 测试套件 建立一个 gmongo
连接,然后在 整个测试套件之后通过拆卸操作将其关闭然后执行测试套件,我们该怎么做?
目前我正在做的是,我正在为特定的 测试步骤 创建连接,然后在执行 测试步骤 之后,我使用代码 mongoClient.close()
关闭连接
但是现在有一个要求,我需要在 测试套件 开始执行之前创建连接,在整个 测试套件 [=] 中使用相同的连接40=] 在 test cases/test 步骤 中,然后在整个 test suite 执行后关闭连接。
谁能告诉我如何使用 Ready!API?
我可能听起来有些迟钝,因为我是 Ready 的新手 API 所以请多多包涵
这是我用来创建到 mongo
的连接的代码
def dbUser = context.expand( '${#Project#MongoUser}' )
def dbPassword = context.expand( '${#Project#MongoPassword}' )
def dbServer = context.expand( '${#Project#MongoServer}' )
def dbDatabase = context.expand( '${#Project#MongoDatabase}' )
def credentials = MongoCredential.createCredential(dbUser,dbDatabase,dbPassword as char[])
def mongoClient = new MongoClient( new ServerAddress(dbServer),Arrays.asList(credentials) )
context.gmongo = new GMongo( mongoClient )
context.mongoDB = context.gmongo.getDB(dbDatabase)
所以我一直在使用当前代码来创建连接。实际上,我希望将其作为三个测试套件。第一个测试套件将包含用于创建连接的 groovy 脚本,第二个测试套件将包含我所有的测试用例,第三个测试套件将包含 mongo 关闭连接脚本。
我们使用属性文件中的环境值。这里 MongoServer 具有建立连接的环境值
我无法理解@Rao,你是如何在测试用例中调用 conn 变量的。特别是 context.testCase.testSuite.db?.connection 部分。 “?”是什么意思?表示并请您告诉我在上述情况下,如何执行该过程
下面的脚本说明了如何实现您在 ReadyAPI / SoapUI
中寻找的内容。请注意,您已经知道如何连接到 Groovy 中的 gmongo
,您需要按照内联注释在占位符中添加该逻辑。
下面是创建数据库连接的测试套件级别 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
。这负责根据 OP 的编辑实现 getConnection()
和 closeConnection()
。请添加/编辑 Mongo classes 的导入语句,因为我不太了解这些。
更新了测试套件的安装脚本
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
class 并且 db
是我们在 Setup Script
中创建并实例化的 DatabaseDetails
class 的对象套房。
而db
包含getConnection()
即db.getConnection()
也可以与db.connection
相同。这就是上面语句中 connection 可用的方式。
如果您想为整个 测试套件 建立一个 gmongo
连接,然后在 整个测试套件之后通过拆卸操作将其关闭然后执行测试套件,我们该怎么做?
目前我正在做的是,我正在为特定的 测试步骤 创建连接,然后在执行 测试步骤 之后,我使用代码 mongoClient.close()
但是现在有一个要求,我需要在 测试套件 开始执行之前创建连接,在整个 测试套件 [=] 中使用相同的连接40=] 在 test cases/test 步骤 中,然后在整个 test suite 执行后关闭连接。
谁能告诉我如何使用 Ready!API?
我可能听起来有些迟钝,因为我是 Ready 的新手 API 所以请多多包涵 这是我用来创建到 mongo
的连接的代码 def dbUser = context.expand( '${#Project#MongoUser}' )
def dbPassword = context.expand( '${#Project#MongoPassword}' )
def dbServer = context.expand( '${#Project#MongoServer}' )
def dbDatabase = context.expand( '${#Project#MongoDatabase}' )
def credentials = MongoCredential.createCredential(dbUser,dbDatabase,dbPassword as char[])
def mongoClient = new MongoClient( new ServerAddress(dbServer),Arrays.asList(credentials) )
context.gmongo = new GMongo( mongoClient )
context.mongoDB = context.gmongo.getDB(dbDatabase)
所以我一直在使用当前代码来创建连接。实际上,我希望将其作为三个测试套件。第一个测试套件将包含用于创建连接的 groovy 脚本,第二个测试套件将包含我所有的测试用例,第三个测试套件将包含 mongo 关闭连接脚本。
我们使用属性文件中的环境值。这里 MongoServer 具有建立连接的环境值
我无法理解@Rao,你是如何在测试用例中调用 conn 变量的。特别是 context.testCase.testSuite.db?.connection 部分。 “?”是什么意思?表示并请您告诉我在上述情况下,如何执行该过程
下面的脚本说明了如何实现您在 ReadyAPI / SoapUI
中寻找的内容。请注意,您已经知道如何连接到 Groovy 中的 gmongo
,您需要按照内联注释在占位符中添加该逻辑。
下面是创建数据库连接的测试套件级别 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
。这负责根据 OP 的编辑实现 getConnection()
和 closeConnection()
。请添加/编辑 Mongo classes 的导入语句,因为我不太了解这些。
更新了测试套件的安装脚本
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
class 并且 db
是我们在 Setup Script
中创建并实例化的 DatabaseDetails
class 的对象套房。
而db
包含getConnection()
即db.getConnection()
也可以与db.connection
相同。这就是上面语句中 connection 可用的方式。