Skip to content

openapiスキーマからrunnのテストを生成するoss

License

Notifications You must be signed in to change notification settings

calloc134/openapi2runn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

_____  _____  _____  _____  _____  _____  ___  _____  _____  __ __  _____  _____ 
/  _  \/  _  \/   __\/  _  \/  _  \/  _  \/___\<___  \/  _  \/  |  \/  _  \/  _  \
|  |  ||   __/|   __||  |  ||  _  ||   __/|   | /  __/|  _  <|  |  ||  |  ||  |  |
\_____/\__/   \_____/\__|__/\__|__/\__/   \___/<_____|\__|\_/\_____/\__|__/\__|__/

概要 / General

このユーティリティは、openapiの定義からAPIテストツールであるrunnのテストシナリオを生成するものです。

インストール / Install

シングルバイナリで稼働するため、インストールは不要です。
Releasesからダウンロードしてください。

使い方 / Usage

$ openapi2runn gen -i (OpenAPI定義) -o (シナリオ保存ディレクトリ) -s (サーバのホスト)

このコマンドを実行すると、-oで指定したディレクトリにシナリオが生成されます。 なお、OpenAPI定義はjsonとyamlの両方が指定可能です。

runnの実行は以下のように行います。なお、カレントディレクトリは-oで指定したディレクトリにしてください。

$ runn run **/**/*.yml (対象サーバのホスト)

特徴 / Features

パスとメソッド毎に分けられたディレクトリ配置

生成されるディレクトリ配置は以下のようになります。
なお、以下は一例です。

.
├── /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の配列にデータを追加することで、複数のデータをループしてテストすることが可能です。

構成ファイル / Configuration

1_noAuthディレクトリには、構成ファイルとしてconfig.tomlを配置することができます。 この構成ファイルは、既に1_noAuth以下にファイル群が存在する場合に有効です。 このtomlの書き方は以下の通りです。

allowOverride = true

この構成ファイルには、以下の項目を設定することができます。

項目名 説明
allowOverride この項目がtrueの場合、当ディレクトリのdata.jsonを上書きすることができます。

注意事項 / Caution

  • このツールは、現在開発中のため、バグが含まれている可能性があります。

今後の予定 / Future Plans

  • Github Actionsでの自動ビルドとデプロイ
  • ログイン認証に対応したテストシナリオの生成
  • テストデータの自動生成(?)

About

openapiスキーマからrunnのテストを生成するoss

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages