gpt4 book ai didi

mongodb - 创建一个 mongo 连接并使其存活以在 Ready!API 中执行整个测试套件

转载 作者:可可西里 更新时间:2023-11-01 09:34:14 25 4
gpt4 key购买 nike

如果您想为整个测试套件 建立一个gmongo 连接,然后在整个测试套件 之后在拆卸操作中关闭它strong> 然后被执行,我们怎么能那样做呢?

目前我正在做的是,我正在为特定的测试步骤 创建一个连接,然后在执行该测试步骤 之后,我使用代码 mongoClient.close()

但现在有一个要求,我需要在 test suite 开始执行之前创建连接,在 内的整个 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,您需要按照内联注释在占位符中添加该逻辑。

下面是创建数据库连接的测试套件级别设置脚本

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 对问题的编辑和他的代码片段,这里是更新的测试套件的设置脚本。这负责根据 OP 的编辑实现 getConnection()closeConnection()。请为使用的 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 被注入(inject)到 testSuite 类中,db 是我们在 中创建和实例化的 DatabaseDetails 类的对象测试套件的设置脚本

并且 db 包含 getConnection()db.getConnection() 也可以与 db.connection 。这就是上述语句中 connection 可用的方式。

关于mongodb - 创建一个 mongo 连接并使其存活以在 Ready!API 中执行整个测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com