matobaの備忘録

育児しながら働くあるエンジニアの記録

pytestでデフォルトはスキップのテストを作る

テストケースを書いておきたいが、常にテストしたくないこともある。 特に非常にテスト実行が重いケース。

前提として、pytestのマーカー

pytestは、マーカーという概念がある。 マーカーという概念を使えば、テストケースに印を付けられる。 そして、特定のマーカーのテストだけを実行したり、特定のマーカーのテストを除外できる。

import pytest

@pytest.mark.hogehoge
def test_sample():
    pass

除外するときはこう実行する。

pytest -m "not hogehoge"

hogehoge の部分は、基本的に任意の文字列を指定できるはず。(すでに何かに使われている場合は誤作動が起きそうだが)

pytestのデフォルトオプションの指定

pytestでは、デフォルトのオプションを設定できる

私は、設定は pyproject.toml に書いている。その場合は以下のように書く。

[tool.pytest.ini_options]
addopts = "-m 'not hogehoge'"

これでデフォルトはスキップできる。

なお、markerの説明を設定に書いておかないと警告が出る。それも書いておくと以下のようになる。

[tool.pytest.ini_options]
addopts = "-m 'not hogehoge'"
markers = [
    "hogehoge: hoge test",
]