pytestのマーカーについて.

目次

  1. テストをスキップする
    1. テストの書き方
    2. reasonの表示
  2. ある条件を満たす場合にテストをスキップする
  3. テストが失敗すると想定する
  4. 警告をスキップする

テストをスキップする

テストの書き方

@pytest.mark.skip(reason="メモ")
def test_以下略

ここでreasonはテストをスキップする理由のメモである.

reasonの表示

pytestコマンドのrオプションでこのスキップした理由reasonを表示できる.

pytestコマンドのaオプションでは成功したもの以外全てを対象に取れるので,

pytest -ra

で成功したもの以外全ての理由を表示できる.

ある条件を満たす場合にテストをスキップする

特定の条件下でテストをスキップするために,

@pytest.mark.skipif(条件, reason="メモ")
def test_以下略

という書き方が用意されている.

テストが失敗すると想定する

xfailマーカーにより予め失敗を想定しておくことで,pytestコマンド実行時,失敗するテストにはFAILEDに代えてXFAILが表示されるようになる.

@pytest.mark.xfail(条件, reason="メモ", strict=True)
def test_以下略

ここでstrictは,失敗を想定するテストが偶然成功してしまった場合の結果報告のあり方を規定する.

  • strict=Falseのとき,XPASSとなる.
  • strict=Trueでは,FAILEDとなる.

警告をスキップする

filterwarningsマーカーを使う.
ignore:以下で正規表現によって警告文を指定すると,テストは実行されるが警告表示を抑制することができる.

たとえば,警告文の文末が"Primary key columns typically may not store NULL."なら、

@pytest.mark.filterwarnings("ignore:.*Primary key columns typically may not store NULL.")

とする.