创建 mongo 连接并使其处于活动状态以在 Ready!API 中执行整个测试套件

2023-12-26

如果你想做一个gmongo整个连接处于活动状态测试套件然后在拆卸操作中将其关闭整个测试套件然后就被执行了,我们该怎么做呢?

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

但现在有一个要求,我需要在之前创建连接测试套件开始执行,在整个过程中使用相同的连接测试套件在 - 的里面测试用例/测试步骤然后在整个连接结束后关闭连接测试套件被处决。

谁能告诉我如何使用准备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 close 连接脚本。

我们使用属性文件中的环境值。这里 MongoServer 具有连接所在环境的值

我无法理解@Rao,你是如何在测试用例中调用 conn 变量的。特别是 context.testCase.testSuite.db?.connection 部分。 “?”有什么作用?表示并请您在上述情况下告诉我如何执行该过程


下面的脚本解决了您如何实现您想要的目标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。就是那样联系可以在上面的语句中找到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 mongo 连接并使其处于活动状态以在 Ready!API 中执行整个测试套件 的相关文章

随机推荐