🍶
Tavernを用いたGo APIテストを試す
はじめに
APIテストツールであるtavernを利用して、Goで実装されたAPIのテストを試す。
ソースコード
API自体は雑実装で、ginを利用して図書データの取得・登録を行うだけ
DB保存とかも考えておらず、いくつかのエンドポイントを用意しただけでtavernによるテストを試すだけの実装を取っている。
動作環境
tavernはpython性のツールであるため、事前にpython3-pipによるインストールを行う必要がある。
注意事項
tavernではyaml形式の定義ファイルを元にテスト実行する。
ファイル名には接尾辞+拡張子として*.tavern.yamlの形式をとらないと、tavern-ciコマンドで認識されないことに注意が必要
テスト実行
APIを裏で起動したままでテストを実行する。
$ tavern-ci -v tests/test_book_api.tavern.yaml
>
=========================================== test session starts ===========================================
platform linux -- Python 3.8.10, pytest-7.2.2, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/xxx/work/tavern-go
plugins: tavern-2.11.0
collected 1 item
tests/test_book_api.tavern.yaml::api_testcase PASSED [100%]
============================================ 1 passed in 0.22s ============================================
まとめ
tavernによるAPIテストを試した。
原始的な人間であるため、APIテストは基本的にPOSTMANやINSOMNIAなどのGUIツールを利用していたが、CIなどに組み込む際にはコードベースのAPIテストが必要になってくるため重要である。
今回は非常に簡易的な方法しか試していないが、MQTTなどのメッセージブローカー形式のAPIについてもプラグインを利用することでテストができるらしい。また、yamlファイルに関しても複数ファイル分割や埋め込みなどにより、複雑なテストシナリオも実現ができそう。
余談だがtavernは英語で居酒屋を指す単語らしい。
Discussion