sql >> データベース >  >> NoSQL >> MongoDB

mongo接続を作成し、Ready!APIでテストスイート全体を実行できるようにします。

    以下のスクリプトは、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と同じにすることもできます 。それが接続の方法です 上記のステートメントで利用可能です。




    1. MGO:クエリを正規化できません:BadValue不明な演算子:$ meta

    2. ElasticSearchとPHPの複数のフィールドでの検索

    3. フレーズmongodbの複数のオカレンスを置き換える方法

    4. mongoDBで英数字の並べ替えを行う方法は?