pytest

Pythonスクリプトユニットテストをpytestで行ってみる。

pythonには最初からユニットテストを行う機能が付属しているのだが、2021 年 Python 開発者アンケートの結果によると一番人気はpytestであるため、普及率に合わせて――普及率は正義である。大抵こなれているし、調べものもしやすい――こちらを採用した。

pytest

Install

pip install pytest pytest-cov  pytest-mock

pytest-covユニットテストカバレッジ計測用。ユニットテストを行うならカバレッジ計測もしたくなるものなので、最初から導入しておく。

pytest-mockはモック用。これもどの道使うはずなので入れておく。

Example

ディレクトリ構成

ファイルが少なければ同じディレクトリでOK。

└─develop_send_mail
    main.py
    main_test.py

公式によれば test.py または test.py のファイルを実行してくれる。

大量のファイルがあるなら、こちらで紹介されているようにディレクトリを分けて下記のようにする。

develop_send_mail
    └─develop_send_mail
        __init__.py
        ...
    └─tests
        __init__.py
        ...

元ネタはこちららしい。

ソースコード

下記のように書く。pytestをコマンドで呼び出すのでテストコードのほうで表現しなくてよいらしい。

from cerberus import Validator

import main


def test_is_email():
    v = Validator({"email": {"check_with": main.is_email}})
    assert v.validate({"email": "test@example.com"})
    assert not v.validate({"email": "testexample.com"})

実行方法

pytest main_test.py

ファイル指定なしでもOK。

pytest

参考