Postmanワークショップ: テスト自動化の復習（Web版）*


**Postman Advent Calendar 2023 シリーズ2　1日目の記事として投稿**

[APIプラットフォーム Postmanのオンラインワークショップ テスト自動化 #3](https://postman.connpass.com/event/300383/)

普段はSalesforceでしか遊んでいないので、Postmanの操作にもたつきます。忘れないうちに復習を兼ねて操作を記録しておきます。


# 私の場合はWeb版にログインしました。
# 個人用のワークスペースは存在していたので、新規作成せずにそのまま使います。

# ラーニング教材をワークスペースにフォーク
ここから、素早く操作できませんね。クリックするところを探しながら... 不得意な英語の画面です（長時間は無理です。拒絶反応が出ます）。

+ まずは、今回使うフォーク対象コレクションを探します。Postman Japan Workshop をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f738b2cc-5429-bb94-4764-3fb5799d3753.png)

+ ... をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8aac446d-f73e-3923-cb4c-2a57f819db54.png)

+ Create a fork をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/78e0e0cd-1a74-d42b-45f9-f356766b34fc.png)

+ Fork Collection をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ce900334-ca45-9367-ab95-559e226a504c.png)

+ 以下のような画面が表示されればforkは成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8be6304f-3075-5783-ab36-d28858cd2645.png)

+ シナリオテスト、パフォーマンステストをクリックすると以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e79b4d5c-af51-a79d-f443-1067cc435acc.png)

# スクリプトを試す

+ Variablesを確認してみましょう。２つの変数が定義されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/53fb31b6-3e84-1d62-ecaa-ed82c503ebf7.png)

+ Sendボタンをクリックすると実行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a67395a2-521c-44cf-3796-6e842dee44dc.png)


+ テストタブをクリックして、シナリオテスト POST registerのTestsにスプリクトを追加します。Test Resultsをクリックすると結果が表示されます。

```
pm.test("An access token is returned", () => {
   pm.expect(pm.response.json()).to.have.property('token')
   pm.expect(pm.response.json().token).to.be.a('string')
})
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f60f6340-b453-dfd3-e657-7b48f5f997a8.png)

+ コレクションに変数を追加するためのコードを追加します

```
pm.test("An access token is returned", () => {
pm.expect(pm.response.json()).to.have.property('token')
pm.expect(pm.response.json().token).to.be.a('string')
pm.collectionVariables.set('token', pm.response.json().token)
})
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ff3f729d-9173-1cd8-8168-18f6175322a1.png)


+ 実行(Sendをクリック)してから、変数を確認してみます。Tokenの現在値がセットされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/488361fe-fd2c-c7cd-ff86-1f19092df90c.png)

+ シナリオテスト GET Get NameのTestsにスクリプトを追加します。

```
pm.test("A name is returned", () => {
  pm.expect(pm.response.json()).to.have.property('name');
  pm.expect(pm.response.json().name).to.be.a('string');
})
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/dc4889bd-744f-0468-57ba-88bcb6c609fb.png)


+ シナリオテスト GET Get NameのPre-requestにスクリプトを追加します。

```
console.log(pm.collectionVariables.get("token"));
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/014aca66-3374-9230-7714-056c417d5c2f.png)


+ Consoleをクリックするとコンソールログが表示できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1422e9c2-1e81-b556-38e4-970ccaca6e0d.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/83e610d2-0677-35aa-753c-c34df1aa5433.png)

+ Tokenの現在値を削除してエラーになるかを確かめます。シナリオテスト GET Get NameのPre-requestにスクリプトを上書きします。

```
if (!pm.collectionVariables.get("token")) {
   console.log("No token is set, so send a request to Register to get one");
   
   pm.sendRequest({
     url: 'https://postman-integration-testing.glitch.me/register',
     method: 'POST'
   }, function (err, response) {
   if (err) {
      console.error(err);
      return;
   }
   pm.collectionVariables.set('token', response.json().token);
});
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/04e83e10-4fec-d34d-6716-c08833234dbb.png)



+ 変数tokenの偏在値を削除します。削除アイコンをクリックすると、変数が削除されるので気お付けてください。値のところにマウスを持っていき消します。（私は消してしまいました...）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/fdc3d936-9eca-71d5-eb72-7ae1d31b86e2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b770be35-2988-18a1-6c60-7fcb5e88d6bb.png)

+ 結果はエラーになっています。正しく処理されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ab0b7aa7-88eb-a2e8-55ee-4f1028e30fbf.png)

+ もう一度　シナリオテスト POST registerのTestsにスプリクトを実行して、成功するかを確かめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/fde6b0e5-c999-9532-f823-eeb2544bf64a.png)


# コレクションランナーでテスト

+ シナリオテストの... を選択してRun folderをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/983fc6e4-8d4a-9c85-71e8-e2c54eddfbd0.png)


+ Run ワークショップ - テスト自動化をクリックします。（あっ、日本語になっている。）

Iterationでテストを繰り返す回数を指定できます。
Delay　でテストを繰り返す場合の間隔を指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e0be1e9a-3229-02e1-fce8-fb7553587ec9.png)

+ 2回実行した例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2861bc3b-4b76-eccd-86cb-73f156dd76d4.png)

+ 実行方法も指定できます。今回は手動(Run manually)を指定しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/cd1bd7d8-dbcd-f4ee-a17a-59463ae35870.png)


+ CLIを選択すると、コマンドが表示されるので、コピーして使えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e6c4b78a-247a-8004-416c-617ab7e88f83.png)

実行例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ef42b6ed-829b-ad4d-f616-5f5cdf353447.png)


+ パフォーマンステストはWEB版ではできないようです。デスクトップ版を使ってください

WEB版の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/7275589c-4091-d5a5-a430-76e5fcc4f270.png)

デスクトップ版の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2835f04f-8426-74f3-74b7-1ab57ada4ca5.png)

+ ファイルを使ってデータも使えるみたい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/189fc8f4-39f2-a41e-46be-259807269b66.png)