Pythonのテストコードのスタンダード「pytest」をマスターする方法
# pytest # python # 初心者
開発好きの皆さん、開発好きじゃないけどPythonを書いている皆さん、テストコードは書いていますでしょうか? 私は今まで全然書いていませんでした。
テストコードの意義
テストコードはバグを簡単に発見できる仕組みそのものなので、
- 未然にバグを防ぐ確率が上がるので、そもそもの製品の品質の改善につながることと(クソコードは減りませんが…。)
- 出来る場合はですが、開発中にもテストコードを適度に実行することで細かな品質確認が出来ます。そのため開発終盤での大きな手戻り等が起こりにくくなるので、開発効率が上がります。
- みんな嫌いで楽しくないテストの工数を圧倒的に減らすことが出来ます!!!!!
私の周りもテストコードよりもどんどん機能開発していこうぜ、という流れだったのですが、やはり開発を続けていると徐々に機能は増え変更に伴う影響も大きくなり、明らかに手動でのテストが回らないようなタイミングが出てきます。
そんな時からでも遅くはありません。テストを書いていきましょう。
大規模なプロジェクトやライブラリ開発あれば、カバレッジ100%(全てのコードに対するテストが存在する状態)を目指すこともいいですが、いきなりそこまでする必要はありません。
新規ユーザーを10パターン作ってテストするなど、パラメータを変えて何回も回して挙動を確認するような場合のように、手動面倒だよ辛い。。みたいな部分だけでもテストコードを少しずつ書いていくことを第一歩として始めましょう。テスト書いていきましょう。
Pythonでのテストコードをマスターしよう
2020年現在、「pytest」というライブラリがデファクトスタンダートとなっているのでこちらの使用をおすすめします。見本語での記事もたくさんあり、pipでインストール可能です。 Pythonにはもともとデフォルトで「unittest」というテスト用のクラスが入っていますが、パラメータを変えたテストが複数できたり、外部APIを呼び出すAPIを一時的にダミーの結果を返す関数に変えることが出来る、というようにpytestのほうが便利な点が沢山あるので基本的にはpytestを使用することをおすすめします。
基本的な使い方はこの記事を読めばだいたいわかります。
・基本的な使い方を学びたい…「pytestに入門してみたメモ ・ちょっと詳しめに学びたい…「pytest ヘビー🐍ユーザーへの第一歩」
腰を据えて勉強してみたいという方はpytest入門用の本も出ています。よくまとまっている本なので一読する価値はあると思います。