_____ _____ _____ _____ _____ _____ ___ _____ _____ __ __ _____ _____
/ _ \/ _ \/ __\/ _ \/ _ \/ _ \/___\<___ \/ _ \/ | \/ _ \/ _ \
| | || __/| __|| | || _ || __/| | / __/| _ <| | || | || | |
\_____/\__/ \_____/\__|__/\__|__/\__/ \___/<_____|\__|\_/\_____/\__|__/\__|__/
このユーティリティは、openapiの定義からAPIテストツールであるrunnのテストシナリオを生成するものです。
シングルバイナリで稼働するため、インストールは不要です。
Releasesからダウンロードしてください。
$ openapi2runn gen -i (OpenAPI定義) -o (シナリオ保存ディレクトリ) -s (サーバのホスト)
このコマンドを実行すると、-o
で指定したディレクトリにシナリオが生成されます。
なお、OpenAPI定義はjsonとyamlの両方が指定可能です。
runnの実行は以下のように行います。なお、カレントディレクトリは-o
で指定したディレクトリにしてください。
$ runn run **/**/*.yml (対象サーバのホスト)
生成されるディレクトリ配置は以下のようになります。
なお、以下は一例です。
.
├── /0_base/
│ ├── /ApiProfileMe/
| | ├── /GET/
│ │ │ └── base.yml
│ │ ├── /PUT/
│ │ │ └── base.yml
│ │ └── /DELETE/
│ │ └── base.yml
│ └── /ApiPostId/
| ├── /GET/
│ │ └── base.yml
│ ├── /PUT/
│ │ └── base.yml
│ └── /DELETE/
│ └── base.yml
└── /1_noAuth/
├── /ApiProfileMe/
| ├── /GET/
│ │ ├── base.yml
| | └── data.json
│ ├── /PUT/
│ │ ├── base.yml
| | └── data.json
│ └── /DELETE/
│ ├── base.yml
| └── data.json
└── /ApiPostId/
├── /GET/
│ ├── base.yml
| └── data.json
├── /PUT/
│ ├── base.yml
| └── data.json
└── /DELETE/
├── base.yml
├── data.json
└── config.toml
URL内のパラメータも、ディレクトリ名として扱われます。
0_baseディレクトリには、APIのベースとなるテストシナリオが格納されます。
以下に実例を示します。
if: included
runners:
req: http://localhost
steps:
first:
req:
/api/auth/login:
POST:
body:
application/json: "{{ vars.req.body }}"
test:
compare(steps.first.res.status, vars.res.status)
1_noAuthディレクトリには、認証が不要なAPIのテストシナリオが格納されます。
以下に実例を示します。
desc:
(POST) /api/auth/loginのテスト
vars:
data: "json://data.json"
steps:
first:
loop:
count: len(vars.data)
include:
path:
../../../0_base/ApiAuthLogin/POST/base.yml
vars:
req: '{{ vars.data[i].req }}'
res: '{{ vars.data[i].res }}'
また、このディレクトリには、テストデータを格納するdata.jsonというファイルがあります。
[
{
"req": {
"body": {"password":"dummy","screenName":"dummy"},
"query": {}
},
"res": {
"status": 200
}
}
]
このjsonの配列にデータを追加することで、複数のデータをループしてテストすることが可能です。
1_noAuthディレクトリには、構成ファイルとしてconfig.tomlを配置することができます。 この構成ファイルは、既に1_noAuth以下にファイル群が存在する場合に有効です。 このtomlの書き方は以下の通りです。
allowOverride = true
この構成ファイルには、以下の項目を設定することができます。
項目名 | 説明 |
---|---|
allowOverride | この項目がtrueの場合、当ディレクトリのdata.jsonを上書きすることができます。 |
- このツールは、現在開発中のため、バグが含まれている可能性があります。
- Github Actionsでの自動ビルドとデプロイ
- ログイン認証に対応したテストシナリオの生成
- テストデータの自動生成(?)