Pytest の基本
ちょくちょく更新
- pytestのテスト対象プログラム名はtest_xxxx.py
- テスト対象となる関数やメソッドはtest_xxxで始まるもの
- テスト対象プログラム内でclassを用いてtestclassを使う際はclass名をTestXXXXにする
- pytest を行う際、コマンドにオプションや引数を与えることで対象ディレクトリ、対象プログラム、対象関数やクラス、メソッドなど細かく指定できる
- pytest -v オプションを使うと詳細にログを出してくれる
- pytest -vv オプションを使うと超詳細にログを出してくれる
- pytest --tb=no オプションを使うとログが簡潔になる
- テストコード内ではassertで評価を行う
- assertはテスト対象関数、メソッドの最後で評価すべし
- pytest.fail("message")は明示的にエラーを発生させる
想定したエラーが発生するか確認する
def test_sample(): with pytest.raises(ExceptionName): '''same_code'''
上記のpytest.raises(ExceptionName)の部分で想定したエラー名を書く
same_codeで想定したエラーが発生すればよい
- with pytest_raises(ExceptionName, match)とすると、match部分に正規表現使ってエラーメッセージとの照合を行う
- with pytest_raises(ExceptionName) as exec_infoなどとすることでExceptionInfo型としてあつかえる
- テストを行う前に、対象のsetup, teardownようにフィクスチャを使う
- フィクスチャ関数には@pytest.fixture()をつける
- フィクスチャを使うテストコードは引数にフィクスチャ関数名を入れる
import pytest @pytest.fixture() def sample(): print('set up') yield something print('tear down') def test_code(sample): print('test code')
上記のようにすると、test_code関数実行時、最初にフィクスチャ関数のsampleが動き、次にtest_codeが動き、最後にsampleのprint('tear down')が実行される