Tavernとは
YamlでAPIの自動テストがかけるテストフレームワークです
https://tavern.readthedocs.io/en/latest/index.html
他の方が丁寧な説明記事を投稿されていますので、Tavern自体の説明はそちらをご覧になって頂くのがよろしいかと
共有したいこと
Stageごとにエンドポイントを切り替える方法がなかなか見つからなかったので、その方法をシェアします
公式ドキュメントにヒントが載っていたので、そのまま使いました
testファイルのディレクトリ構成は下のようになっています
tests/
├── __init__.py
├── test_dev.sh
├── test_api.tavern.yaml
└── values
├── __init__.py
├── dev_values.yaml
└── common.yaml
test_api.tavern.yamlがtest対象のファイルで、
dev_values.yamlに開発環境に依存するデータを
common.yamlに共通に使うデータを設定しています
テスト実行時は下のように--tavern-global-cfgに両方のファイルを指定しています
コマンドが長いので、test_dev.shに下のコマンドを書き込んで、テストの実行時は、test_dev.shを実行しています
#!/bin/bash
tavern-ci --tavern-global-cfg tests/values/dev_values.yaml tests/values/common.yaml
今後開発が進むと、stg_values.yamlとかが増え、そのファイルを指定したtest_stg.shが増えていく予定です
なお、test_api.tavern.yaml内に**!include**で共通ファイルを指定して、ステージごとのファイルを--tavern-global-cfgに設定した場合は、エラーになってしまいました
Using the run() functionも試しましたが、tavernのテストファイルのアドレス解決が素直に出来なかったので、諦めました
終わりに
目的は達成できたのですが、もっとスマートな実現方法もありそうな気がしています
良い方法がありましたら、教えて頂けると嬉しく思います