🍶
Tavernを用いたGo APIテストを試す
はじめに
APIテストツールであるtavern
を利用して、Goで実装された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