CIパイプラインでのPostmanコレクションの実行


導入


アプリケーション開発やテストに携わっている場合は、APIのエンドポイントをテストするためにPostmanを使っていたでしょう.この投稿では、サンプルエンドポイントを作成し、エンドポイント用のPostmanテストを作成し、その変更をプッシュするたびに、これらのPostmanテストを実行するためのGithubワークフローを作成します.我々が歩くコードはmy repoにも見受けられる.
それで始めましょう.

アプリ


この記事のポイントは、郵便配達人のテストを作成し、それらをパイプラインで実行することを通じて歩くので、私はサンプルアプリで多くの時間を過ごすつもりはない.エンドポイントをすぐに立ち上げるには、JSON serverというオープンソースツールを使っています.
私は、あなたにJSONサーバーがあなたのためにすることができるすべてのものすごいものを言う誘惑を避けます.今のところ、私はちょうどDockerとJSONファイルで完全に機能的なエンドポイントを回転させることができると言います.
このエンドポイントはかなり基本的になり、albumsのリストに基本的なCRUDオペレーションを提供します.
JSONファイルは次のようになります.
{
    "albums": [
        {
          "id": 1,
          "artist": "The Beatles",
          "title": "Please Please Me",
          "year": "1963"
        },
        {
          "id": 2,
          "artist": "The Beatles",
          "title": "With the Beatles",
          "year": "1963"
        },
        {
          "id": 3,
          "artist": "The Beatles",
          "title": "A Hard Day's Night",
          "year": "1964"
        },
        {
          "id": 4,
          "artist": "The Beatles",
          "title": "Beatles for Sale",
          "year": "1964"
        },
        {
          "id": 5,
          "artist": "The Beatles",
          "title": "Help!",
          "year": "1965"
        },
        {
          "id": 6,
          "artist": "The Beatles",
          "title": "Rubber Soul",
          "year": "1965"
        },
        {
          "id": 7,
          "artist": "The Beatles",
          "title": "Revolver",
          "year": "1966"
        },
        {
          "id": 8,
          "artist": "The Beatles",
          "title": "Sgt. Pepper's Lonely Hearts Club Band",
          "year": "1967"
        },
        {
          "id": 9,
          "artist": "The Beatles",
          "title": "The Beatles (White Album)",
          "year": "1968"
        },
        {
          "id": 10,
          "artist": "The Beatles",
          "title": "Yellow Submarine",
          "year": "1969"
        },
        {
          "id": 11,
          "artist": "The Beatles",
          "title": "Abbey Road",
          "year": "1969"
        },
        {
          "id": 12,
          "artist": "The Beatles",
          "title": "Let It Be",
          "year": "1970"
        }
      ]
  }
このファイル( Docker )で、このようにエンドポイントを起動できます.
docker run -d -p 3005:80 -v /Users/denniswhalen/postman-workflow/db.json:/data/db.json clue/json-server
あなたは、現在、http://localhost:3005/albumsで終点についてでなければなりません
いくつかのデータを取得すると、Postmanテストを作成できます.

郵便配達人のテスト


郵便配達人に精通していると思います.あなたが始めるためにチェックアウトすることができないならば、そして、もちろん、あなたを始めるために利用できる多くの他のすばらしい資源は、もちろんあります.
私の最初のテストは、http://localhost:3005/albumsにGETリクエストを行い、ステータスコード200の応答を取得し、応答のスキーマを検証することを確認します.
Postmanリクエストのテストは次のようになります.

私はスキーマを検証しているこのクールな小さいPostmanテストについてはとても良いですが、スキーマ検証のためにPostmanを使用したことがないなら、それは間違いなくいくつかの研究の価値があります.参考までに、私は期待されたスキーマを生成するためにhttps://www.liquid-technologies.com/online-json-to-schema-converterを使いました.
一旦私が郵便マンテストを完了して、それがそうしなければならないとき、テストパスを確かめて、失敗するならば、私はそれを私のコードRPOに加えます.どのようなrepoあなたは言う?よく、私は私がまだ言及していないと思います、しかし、我々は我々の郵便配達人収集を保存するつもりですgithubレポ.そのためには、JSONファイルとしてコレクションをエクスポートするためにPostmanを使用する必要があります.
この変更をGithub , Boomにプッシュすると、ワークフローは実行されません.

もちろん.まだワークフローを作成していないからです.コードが押されるたびに、我々はPostmanテストを実行するワークフローを望みます.Postmanテストが失敗した場合、ビルドは失敗します.ワークフローを作りましょう.

ワークフロー


Githubがワークフローファイルを見つけるのを許容するために、ファイルは./.github/workflowsフォルダにある必要があります.私は私のファイルworkflow.ymlに名前を付けます、しかし、名前は重要でありません.ファイル拡張子( .ymlまたは.yaml )とファイル位置の問題だけです.
を見てみましょう.このワークフローのためのYMLファイル
name: run Postman API tests
on: 
  push:
    branches:
      - 'main'
      - 'feature/**'
    paths-ignore:
      - 'Postman Collections/**'
  pull_request:
    branches: [main]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: start the app
        run: |
          docker run -d -p 3005:80 -v ${{ github.workspace }}/db.json:/data/db.json clue/json-server

      - name: run postman tests
        uses: matt-ball/newman-action@master
        with:
          collection: "Postman Collections/albums.json"
このワークフローはかなり基本的であり、うまくいけば「ビルド」ジョブのステップは意味をなす.
  • チェックアウト-レポ
  • からコードを引いてください
  • アプリを起動- JSONサーバーエンドポイント
  • を開始します
  • run Postman test - Postman依存性を持つコンテナでPostmanテストを実行する
    24579142ファイルをRPOに追加してプッシュした後、Githubのアクションタブを実行しているワークフローが表示されます.
    うまくいけば、テストビルドが成功したことを示します.

    「ランニング・ポストマン・ステップ」ステップを開くと、PostMenのテスト結果についてもっと詳細を見ることができます.

    包む


    そこで、私たちが行くので、エンドポイントを作成し、クールなPostmanテストを書いて、テストを実行するには、ワークフローを持つrepoを作成しました.それはあまりにも苦痛ではなかった?
    私たちの例では、Postson CollectionをJSONにエクスポートして、他のファイルと同じようにrepoに追加しました.ポストマンコレクションに対処するための他のオプションがいくつかあります.
    私がここで話したコードはmy repoにあります.
    そして、最終的に、私の将来のポストのために通知を得るために、subscribe to my blog siteに自由に感じてください.ありがとう