以下のスクリプトは、ReadyAPI / SoapUI
で探しているものをどのように達成するかを示しています。 。 gmongo
に接続する方法をすでに知っていることに注意してください Groovyでは、コメントをインラインでフォローして、プレースホルダーにそのロジックを追加する必要があります。
以下は、テストスイートレベルのSetup Script
です。 db接続を作成します。
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
です。 db接続を閉じます。これはティアダウンスクリプトであるため、テストスイートの実行が完了するとすぐに接続が自動的に閉じられます 。
testSuite.db?.closeConnection()
これで、db接続を何度も作成する手順は必要ありません。Groovy Script
で以下のスクリプトを使用するだけです。 既存のデータベース接続を取得するためのテスト手順 。
def conn = context.testCase.testSuite.db?.connection
conn
の使用 変数の場合、クエリを実行できるはずです。
注: db接続はSetup Script
で行われるため テストスイートの場合、テストケースを実行しただけの場合(つまり、テストスイートが呼び出されたり実行されたりしない場合)、接続を取得できない場合があります。このような場合は、Setup Script
を手動で実行してください。 テストスイートの。
編集: OPによる質問の編集と彼のコードスニペットに基づいて、更新されたテストスイートのSetup Script
を次に示します。 。これにより、getConnection()
の実装が処理されます。 およびcloseConnection()
OPの編集に基づいています。使用されているMongoクラスのインポートステートメントを追加/編集してください。私はそれらを実際には認識していません。
更新されたTestSuiteのセットアップスクリプト
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()
が含まれています つまり、db.getConnection()
これは、db.connection
と同じにすることもできます 。それが接続の方法です 上記のステートメントで利用可能です。