どのようにPostmanテストを書いて、あなたのCIの一部としてそれらを実行する


伝統的に構築、展開、およびテスト(ホワイトボックス)APIは分離した方法で行われました.QAチームはCHAI HTTP、Blue Tapeなどのツールを使用してホワイトボックステストを書いている間、DEVOPSチームは展開を扱いました.
Postmanは、APIのコラボレーション、共有、および文書化のための標準になりました.あなたがAPIを構築しているならば、可能性はあなたがPostmanを使っているということです.
多くの人は、郵便マンもテストを書くことができます知っている.この機能を使用すると、バックエンド開発者がテストの一部としてテストを記述できます.これらのテストは、後に連続統合パイプラインで実行できます.これらの自動化は確実性を展開にもたらします.
このチュートリアルでは、TODOを使用します.https://pyher2ne7raefaz22vgl2pr2ku.appsync-api.ap-south-1.amazonaws.com/graphql ) GraphSQL APIを出発点としてカバーします.
  • Postmanを使った書き込みテスト
  • Githubアクションを使用してテストを実行し、デフォルトのブランチにプッシュします
  • スタータープロジェクト


    次のリポジトリをクローンしてください.https://github.com/wednesday-solutions/postman-tests-starter . このチュートリアルでは、いくつかのエンドポイントを公開します.
  • CreateUser
  • 創造論者
  • createNote
  • クエリ
  • 注:もしあなたがここでスペックを読むために数分かかることがあります.( https://graphql.org/ )

    書き込みテスト


    最初のステップスタート郵便配達人として→ インポートとドラッグアンドドロップコレクションと環境.

    Createuserテスト


    このAPIはユーザを作成します.これをテストするのは簡単です.
    今すぐあなたのコレクションをロードして準備ができて、これらの手順に従ってテストを追加します.
    1 .突然変異フォルダを開き、CreateUserを選択します.

    2 . bodyタブに移動し、右側のGraphSQL変数セクションにこれを追加します
    {
      "createUserInput": {
          "name": "Mac",
          "userRef": "mac-123"
      }
    }
    
    上記の変数はAPIに渡されます.あなたが好む何かにこれらの値を変更すること自由に感じなさい.
    テストタブに移動し、次のスニペットを追加します.
    pm.test("if createUser API creates a valid user", function() { // 1
        const response = JSON.parse(responseBody); 
        pm.expect(response.errors).to.be.undefined // 2
        const jsonData = JSON.parse(responseBody)
        postman.setEnvironmentVariable("user_id", jsonData.data.createUser.id) // 3
    });
    
    上のコードは最初は理解が難しいかもしれません.難しいビットを見ましょう.
  • pm こちらは郵便配達人です.Postmanが実行できるテストメソッドを提供するのは、オブジェクトです.
  • ここでは、APIからの応答にエラーがあるかどうかを確認します.エラーがなければ、ユーザの作成が成功したことを意味します.
  • ここで環境変数をuser_id APIから受け取りました.
  • この時点でSENDボタンを選択します.APIは応答を返します、そして、プレビュー・ボタンを選んでください、そして、環境変数がAPIによって返されたのと同じユーザー名IDを持っていることに注意してください.

    CreateListテスト


    このAPIはtodosのリストを作成します.このAPIをテストするには、前のテストで作成したuserRound IDのリストを作成するテストを書きます.
    1 .突然変異フォルダからのCreateList

    body tabに移動し、次のように追加します.
    {
      "createListInput": {
          "name": "House chores",
          "userId": {{user_id}}
      }
    }
    
    テストタブに移動し、次のように追加します.
    pm.test("if createList API creates a valid list", function() {
        const response = JSON.parse(responseBody);
        pm.expect(response.errors).to.be.undefined
        const jsonData = JSON.parse(responseBody)
    
        pm.expect(jsonData.data.createList.userId)
                .to.be.equal(parseInt(pm.environment.get("user_id"), 10));
    
        postman.setEnvironmentVariable("list_id", 
                jsonData.data.createList.id)
    });
    
    上記のコードを理解するのは簡単です.UserRound IDが同じであるかどうかを確認し、APIから受信したListRes IDを環境変数で設定し、さらに使用します.ドリルはクリアされなければなりません.依存関係は、関連APIをテストするために使用できる環境になります.

    createNoteテスト


    このAPIは、ユーザーがtodoを作成することができます.このテストを書きましょう
    1 .突然変異フォルダのcreateNoteを選択します.

    body tabに移動し、以下を追加します
    {
      "createNoteInput": {
          "note": "Mow the lawn",
          "listId": {{list_id}},
          "deadline": "2021-01-01T00:00:00.000Z"
      }
    }
    
    テストタブに移動し、次のようにテストを書きます
    pm.test("if queryNotes API returns the correct note and associated data", function() {
        const response = JSON.parse(responseBody);
        pm.expect(response.errors).to.be.undefined
        const jsonData = JSON.parse(responseBody)
        const notes = jsonData.data.notes;
        pm.expect(notes.items.length).to.be.equal(1);
        pm.expect(notes.items[0].id).to.be.equal(pm.environment.get("note_id"));
        pm.expect(notes.items[0].note).to.be.equal("Mow the lawn");
        pm.expect(notes.items[0].done).to.be.equal(false);
        pm.expect(notes.items[0].deadline).to.be.equal("2021-01-01T00:00:00.000Z");
    
        pm.expect(notes.items[0].listId)
            .to.be.equal(pm.environment.get("list_id"));
            pm.expect(notes.items[0].list.id)
                .to.be.equal(pm.environment.get("list_id"));    
            pm.expect(notes.items[0].list.user.id)
                .to.be.equal(pm.environment.get("user_id"));
    });
    
    上記のテストケースは、右のリストとユーザーIDで正常に作成されたノートをチェックします.

    ノートテスト


    名前が示すように、このAPIは、つくられるメモのために質問するのに用いられます.上記と同様に、作成されたノートが正しく格納されているかどうかをチェックするテストを書くことができます.私はどのようにこのテストを書くことができますし、あなたのための運動としてこれを残しての詳細に移動しません.
    ここで完成したテストを見ることができます.https://github.com/wednesday-solutions/postman-tests

    ギタブアクション


    この時点まで、テストのあるAPIの作業コレクションが必要です.この節では、マスターするマージにこれらのテストを実行するには、Githubアクションを設定する方法を学びます.
    注意: Githubアクションはこのチュートリアルの範囲外です.あなたが彼らについてより知りたいならば、これを読んでくださいhttps://github.com/features/actions )
  • このコマンドを使用してYMLファイルを作成します
  • mkdir -p ./github/workflows
    
  • 次のコードをYMLファイルに追加します
  • name: Postman tests
    on:
      push:
        branches: [master]
    jobs:
      run-and-test:
        runs-on: ubuntu-latest
        steps:
          - name:
            uses: actions/checkout@v2
    #1
          - name: Run API Tests
            id: run-newman
            uses: anthonyvscode/newman-action@v1
            with:
              collection: todo-application.postman_collection.json
              environment: todo-application.postman_environment.json
              reporters: cli
    #2
          - name: Output summary to console
            run: echo ${{ steps.run-newman.outputs.summary }}
    
    上記コードの説明です.
    1 .これはnewman-action コレクションランナーを実行するgithubアクション.
  • collection コレクションファイルへのパスを期待します.
  • environment 環境ファイルへのパスを期待します.
  • ここでサポートするさまざまなオプションのすべてを読むことができます.https://github.com/marketplace/actions/newman-action
    2 .これは、コンソールに1 . 1の要約を印刷します
    あなたのgithubレポに上記のファイルを押して、あらゆるマージで実行するアクションを見てください.

    ここからどこへ行くか


    PostmanはAPI開発のための事実上のコラボレーションプラットフォームになりました.彼らがAPIを手動でテストしている間、バックエンド開発者は統合テストを書くことができます.
    その最も新生の形で、これはあなたのAPIが基本的な健全性テストを通過することを保証する最初のステップです.
    より多くのテストケースを追加し、さまざまなシナリオをエミュレートするので、統合テストのための別のフレームワークを使用する必要がなくなります.
    あなたは完全な解決策をチェックアウトすることができます
    ➤こちらhttps://github.com/wednesday-solutions/postman-tests
    今、あなたはどのようにテストを記述し、PostScriptで動的変数を動的に設定する方法を知っているポストマンの完全な可能性のロックを解除するには、次の記事を見てください!
  • https://learning.postman.com/docs/writing-scripts/test-scripts/

  • https://learning.postman.com/docs/writing-scripts/script-references/test-examples/ - https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/
  • 私はあなたがPostmanテストでこのチュートリアルを楽しんだことを願っています.何か質問やコメントがあれば、下記のフォーラムディスカッションに参加してください.
    ➤このブログはもともと投稿されましたhttps://wednesday.is 水曜日に私たちに従って動作するようにそれが何であるかについての詳細を知るために