背景
Pythonユーザー初級〜中級者の方にとって、
書いたコードの正しさを効率的にテストしたい
と考えるのではないでしょうか。
Pythonには、テストフレームワークはいくつもありますが、pytestの人気が高いことは明らかです。
そこで、今回は今すぐ始められるpytestの使い方について紹介します。
サンプルコード
まずは、サンプルコードです。
以下のようなディレクトリ構成があるとします。
src/ ┣ scripts/ ┃ ┣ __init__.py ┃ ┗ main.py ┣ tests/ ┃ ┣ __init__.py ┃ ┗ test_main.py ┗README.md
また、main.py
は
def f(x: int): if x < 0: return None return x** 2 + 2*x + 1 if __name__ == '__main__': result = f(4) print(f'resut is {result}')
今回は、def f()
をテストしたいです。
このとき、pytestは下記のように書きます。
from scripts import main # pytestを実行するには、関数の始まりの語句をtestにする必要があります def test_f_pattern1(): # 'assert'を使って、正しさをチェックできます assert main.f(1) == 4 assert main.f(0) == 1 assert main.f(-1) == None def test_f_pattern2(): assert main.f(1) != 1
pytestを実行するにあたって、大事なポイントは、
- 実行コマンドは、
pytest test_main.py -s -v
- 関数名の始まりは、
test_
で始める assert
を使って、試験したい関数の計算結果が意図通りかを確認する__init__.py
を書く
です。
まずは、cloneして雰囲気を掴んで貰えると嬉しいです。
更に知りたい方向け
testについてもっと知りたい方向けに名著が2つあるので、ご紹介します。
テスト駆動Python 第2版
完全にpytestの使い方に解説してくれている本です。 pytestの大体の機能はこれでOKです。
テスト駆動開発
テストに興味のある方は、テスト駆動開発がなにかにも興味があるのではないでしょうか? TDD(Test Driven Development)について学ぶのであればこちらがおすすめです。