
pytest_基本的な作業手順 #330日目
ついにMacBook PROを支給してもらったのですが、Windowsとの違いが大きすぎてnote更新よりもMacに慣れる作業に時間が取られまくっています笑。基本設定と環境構築を進めているのですが、こだわり出すと無限にやることがありそうです笑。ただ一つ言えることは、初めてのMac、めっちゃ楽しいです!!
さて、操作に慣れるためにもnoteを更新していきます。会社でpytestを実装していく際の流れを教わったことのメモです。
基本的なpytestのコードは以前まとめさせていただきました。
pytestを実装する流れ
今回は大きな流れを確認していきます。
【設計〜事前準備】
①APIの仕様把握、概要把握
②テストケースの洗い出し
③テスト用データの用意
①はテストするAPIにどういうreturnがあるのかということを把握します。ここでのreturnとは、どういうエラーを想定しているか、等の非正常系の結果も当然把握します。
②は、①で把握したコードの通り道を全て通るように用意するのが基本です。ただし場合によっては想定していないエラー(定義していないエラー)は省略する場合もあります。
③テスト用データの用意が最も時間のかかるポイントです。想定されるテストケースの正解データを準備します。
次に、コードの大まかな構成です。
【コードの構成】
①テスト用のデータベースやキャッシュを生成する
②APIを叩く
③事前準備していた結果と呼び出し結果が一致するか確認
④テストが終了したらテスト用の①を空にする
上記の枠組みでコードを書いていくことになります。
pytestを効率化するために
デコレータやpytest実行時のコマンドオプションで効率化を図ることができます。
・pytestの組み込みデコレータ
pytest.mark.parametrize:
1つのテストメソッドで複数パターンのテストを行える。
複数のパラメータでテストを実施する際、いずれかのパラメータでエラーが出てもテストを継続してくれる。
pytest.mark.django_db:
そのテストでDjangoのテスト用DBが使えるようになる。
・pytestのオプション
pytest -v --lf
前回NG1だったテストだけ実施
pytest -s
pytestコード内にprintを仕込んで標準出力できる
ここまでお読みいただきありがとうございました!!