Postman pmオブジェクト-関連機能のテスト

5403 ワード

pmオブジェクトは、テスト関連機能も提供します.
  • pm.test関数は、テストタイトルを入力し、様々な断言を加えることができるテストを生成するために使用される.すべてが成功すればテストは成功し、ある断言が失敗すればテストは失敗する.1つのリクエストに複数のテスト関数を追加できます.
  • pm.expect関数は、様々な断言を生成するために使用される.
  • pm.responseオブジェクトにも多くの断言文が組み込まれています.

  • pm.test

    pm.test(testName:String, specFunction:Function):Function :
    この関数はすでに私たちの前の文章に何度も登場していますが、その時は深く理解する必要はありません.プリセットの文を使えばいいです.
    testsオブジェクトとは異なりpmを使用する.test()関数作成テストは、テストの名前を正確に付けることができます.
    関数の内部にエラーがあっても、スクリプトの残りの部分がブロックされないことを確認できます.pm.test(testName:String, specFunction:Function)は2つのパラメータを受信します.testNameは文字列でテスト名を入力し、最終レポートに表示されます.specFunctionはコールバック関数を受信し、このコールバック関数の内部で断言文を実行します.
      pm.test("response should be okay to process", function () {
          pm.response.to.not.be.error;
          pm.response.to.have.jsonBody('');
          pm.response.to.not.have.jsonBody('error');
      });
    

    pm.expect

    pm.expect(assertion:*):Function → Assertion :
    pm.expectは汎用的な断言関数です.JavaScript BDDライブラリChaiJSに基づいて開発された機能です.ChaiJSライブラリを使用すると、文法の読みやすいテストを簡単に作成できます.(BDDは、動作駆動開発、テストプロセスを自然言語で記述しているので、もちろん読みやすい)文法はChaiJSと一致しています.
    この関数はresponseまたは変数variablesに応答するデータ断言を処理するのに役立つ.pm.expectは主にpmとtest連用.
    expectは所望の意味であり、すなわちexpect関数に渡される値が所望に合致するか否かを意味する.一連の呼び出しチェーンによって実現される.
    一般的な使い方:
    pm.test(" ", function(){
        pm.expect('abc').to.include('ab'); // =>  
    });
    
  • pm.expect()は、任意のデータ型であってもよい断言内容(実際の結果に相当)を受信する.
  • .toは、断言と判断を接続するための接続子である.
  • .include()は、断言方法および予想される結果を指定するために使用される.

  • コネクタ

    .toと同様に、expectは多くのコネクタを提供しています.これらのコネクタは結果に影響を与えません.主な目的は、断言文を英語の文法に適合させることです.つまり、勝手に書いてもいいということです..toのほかに、次のコネクタがあります.
    to,be,been,is,that,which,and,has,have,with,at,of,same

    アサーション方式


    等しい:.equal(value)
  • value:Mixed

  • ターゲットは厳密に(===)valueに等しいと断言します.
    pm.test(" ", function(){
        pm.expect('100').to.be.equal(100); // =>  , 
        pm.expect(5.5).to.be.equal(5.5);
    });
    

    非表示:.notその後の断言に無条件に反対する
    pm.test(" ", function(){
        pm.expect('nemo').to.not.equal('name');  // => not 
    });
    

    expect(foo).to.not.equal('bar') expect(goodFn).to.not.throw(Error) expect({ foo: 'baz'}).to.have.property('foo') .and.not.equal('bar')
    含む:.include(value) / .contains(value)
  • value:Object | String | Number

  • 実際の結果に予想される結果が含まれているかどうかを示し、2つの関数の使い方が一致しています.
    pm.test(" ", function(){
        pm.expect('abc').to.include('ab');
        pm.expect('abc').to.contains('ab');
        pm.expect({name:"Nemo"}).to.contains.keys('name');
    });
    

    判定結果が真か否か:.ok/.trueターゲットが真の値であると断言する.trueと.OKの違いは,タイプ変換を行わず,ブール値trueのみが断言できることである.
    pm.test(" ", function(){
        pm.expect('nemo').to.be.ok;  // =>  
        pm.expect(1).to.be.true;  // =>  ,1 true
        pm.expect(1).to.be.ok;   //  1, 
        pm.expect(false).to.not.be.ok;
        pm.expect(null).to.not.be.true;
    });
    

    以上、最も一般的な断言方法を挙げました.興味のある学生は、このブロガーの翻訳内容「ChaiJS断言ライブラリAPI中国語ドキュメント」を参照してください.

    ResponseアサートAPI


    以下はpm.responseオブジェクトに組み込まれた断言文は、expect関数を使用せずに直接使用できます.
  • pm.response.to.have.status(code:Number):応答結果に指定されたステータスコードが含まれているか否かを判断する.
  • pm.response.to.have.status(reason:String):応答結果に指定された状態記述が含まれているか否かを判断する.
  • pm.response.to.have.header(key:String):応答結果に指定されたヘッダフィールドが含まれているか否かを判断する.
  • pm.response.to.have.header(key:String, optionalValue:String):応答結果に指定されたヘッダフィールドと値が含まれているか否かを判断する.
  • pm.response.to.have.body():応答結果にメッセージボディが含まれているか否かを判断する.
  • pm.response.to.have.body(optionalValue:String):応答結果に指定された文字列が含まれているか否かを判断する.
  • pm.response.to.have.body(optionalValue:RegExp):応答結果に指定された正規表現規則に合致する文字列が含まれているか否かを判断する.
  • pm.response.to.have.jsonBody():応答結果にjson形式のメッセージボディが含まれているか否かを判断する.
  • pm.response.to.have.jsonBody(optionalExpectEqual:Object):応答結果に指定されたオブジェクトのjsonフォーマットメッセージ体が含まれているか否かを判断する.
  • pm.response.to.have.jsonBody(optionalExpectPath:String):応答結果が指定された階層のjsonフォーマットメッセージ体を含むか否かを判断する.
  • pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*):応答結果が指定されたパスを含み、値も一致するjsonフォーマットメッセージ体を含むか否かを判断する.
  • pm.response.to.have.jsonSchema(schema:Object):応答結果が指定されたjson構造に合致するか否かを判断する.schemaパラメータはオブジェクト形式で記述されたjson構造である.
  • pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object):応答結果が指定されたjson構造に合致するか否かを判断する.schemaパラメータは、オブジェクト形式で記述されたjson構造であり、ajvライブラリを付加する動作である.

  • 判定json結果例:
    var shema = {
        type: "object", //  
        properties:{
            "error_code": {type: "number"},  //  error_code, number
            "data": {type: "array"} 
        },
        require: ["error_code", "data"] //  error_code data
    }
    
    pm.test(" ", function(){
        pm.response.to.have.jsonSchema(schema);
    });