【Day4】ステップに説明を付けてみる / runnチュートリアル
はじめに
一人アドベントカレンダーとしスタートしていました。
本記事は API シナリオテストツールでもある runn のチュートリアルをステップバイステップで理解して貰おう!というのが趣旨です。
25 日間のチュートリアルを経て、 runn を使っての API シナリオテストや、 API と連動させる自動化処理を一人で行えるようになることを目標にしています。
runn is 何?という方は、以下に紹介記事を書いていますのでよろしくお願いします。
チュートリアルを実際に試し、もし躓いた箇所があれば、記事のコメント欄にお知らせいただけると幸いです。
前日の記事は「curlコマンドをreplayさせる」でした。
ステップに説明を付けてみる
昨日の記事 で cURL のコマンドを ruun のシナリオに変換することを行いました。
ただそのままだと何の API を呼び出しているのか?人にはわかりません。
シナリオを文章化する意味でもステップに説明をつけていきましょう。
前回の runbook は長いので一部割愛してシンプル化も合わせてします。
runbook 全体の他にステップ内にも desc
セクションで説明を追加することが出来ます。
これでぐっと可読性が高くなります。
こちらの説明は debug 実行時にも出力され、何をやっているのか?わかりやすくなり、エラー発生時にもステップを特定しやすくなります。
$ runn run day04/desc.yml --debug
Run "katzumiの記事一覧を取得します" on "Descriptionをつけて見やすくしましょう".steps[0]
-----START HTTP REQUEST-----
GET /api/articles?order=latest&username=katzumi HTTP/1.1
Host: zenn.dev
Content-Type: application/json
わかりやすいように前回の内容との比較してみます。
$ runn run day03/curl.yml --debug
Run "req" on "Generated by `runn new`".steps[0]
-----START HTTP REQUEST-----
GET /api/articles?count=96&order=latest&username=katzumi HTTP/1.1
Host: zenn.dev
Accept: */*
Accept-Encoding: deflate, gzip
Accept-Language: ja,en-US;q=0.9,en;q=0.8,ko;q=0.7
Authority: zenn.dev
Cache-Control: no-cache
Content-Type: application/json
Pragma: no-cache
Referer: https://zenn.dev/katzumi
Sec-Ch-Ua: Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: macOS
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
いかがでしょうか?
前日のおさらい
前回の記事では出力された runbook の説明を割愛してしまったので、シンプルになった runbook で説明をします。
最初に runners
というセクションが増えています。
こちらのセクションでは、runbook 内で実行する各種 Runner を定義します。
こちらの req
という名前で定義されているものが HTTP Runner になります。http://
と https://
のプロトコル名から始める必要があります。
後日触れますが、http 以外のプロトコルの Runner が幾つか用意されています。
こちらのセクションでそれらの Runner の名前とオプションを定義する箇所だと覚えておいて貰えれば OK です。
次にリクエストを送信している部分になります。
こちらの req
は先程の説明の runners
セクションで定義された Runner の名前になります。
今回は、 req
のエンドポイントが https://zenn.dev
になっており、こちらの Runner を使ったアクセスはすべて https://zenn.dev
へのリクエストとなります。
req
(Runner セクション)の次の階層に指定するのがリクエストのパスになります。
リクエストパスの下の階層が HTTP リクエストのメソッドを指定します。こちらが get
になっており、今回は GET メソッドでリクエストすることになります。
HTTP メソッドの下の改装にリクエスト内容を定義します。今回は request body を指定しています。
リクエストヘッダーも定義できます。
HTTP 通信の理解があれば、この内容を理解するのは容易でしょう。
明日は「変数を使ってみる」です。
Discussion