🏔️

Python Unit Test あれこれ

2022/06/21に公開

はじめに

PythonのUnitTestのあれこれを1ページでまとめるもの。
徐々に深堀りし・書き足して自分のチートシートに仕上げたい。

Pytest

PythonのUnitTestのデファクト?だと思う。
以降はすべてPytestのUnitTestで利用を試しているものになる。
https://docs.pytest.org/en/stable/

freezegun

現在時刻を固定的に扱いたい場合に利用するもの。
fixtureでもwithでも利用できる。
https://pypi.org/project/freezegun/

pytest-env

環境変数を定義したい場合に利用するもの。
pytest.iniとかに環境変数を書いておけば展開してくれるので楽。
https://github.com/MobileDynasty/pytest-env

pytest-mock

pytestでMockを利用するためのライブラリ。
https://pytest-mock.readthedocs.io/en/latest/

requests-mock

PythonのHTTPクライアントとしてよく利用されるであろう、 requests の Mock。
https://requests-mock.readthedocs.io/en/latest/#

pytest-httpserver

Pytest中に独立したHTTPServerを建てることが可能なライブラリ。
https://pytest-httpserver.readthedocs.io/en/latest/

moto

様々なAWSサービスのMockとして振る舞ってくれるもの。
主要なサービスが揃っているので、ニッチな開発でなければ成り立つのでは?レベル。
https://github.com/spulec/moto

DynamoDB

System Manager Parameter Store

pytest-cov

Pytestのカバレッジ測定ツール。
かんたんに利用できてHTMLレポートまで出力できるので、とても便利。
自分のUnitTestの、圧倒的なルート抜けなどのチェックを行うのに最適。
https://pytest-cov.readthedocs.io/en/latest/

コマンドラインでよく指定するもの

pytest のコマンドライン実行時に、オプションを付けて実行する。

オプション 操作
--cov カバレッジの取得(C0)
--cov-branch 分岐カバレッジの取得(C1)
--cov-report=html HTML形式のレポート出力。
--cov-report=xml XML形式のレポート出力。CI等でSonarで可視化する場合などで利用。

終わりに

すべての商用コードには、きちんとしたUnitTestが一緒に組まれていないと、予後が悲惨なことになる。面倒ではあるが、頑張ろう。

※Pythonは初心者なので、間違いなど有りましたらコメントにて指摘をいただけると幸いです。
※間違った情報を拡散して人の時間を無駄に奪わぬよう修正は行います。

Discussion