誰かのための備忘録です。あと、日本語の技術記事を増やそうかな、とも思っています。
pytestでテストを書きつつ、コードを修正していた際、既存のテストが失敗することはあります。
で、たくさんテストが失敗しすぎて、結果が見にくいと感じることもあります。
そういうときに、一時的にあるテストケースのテストの失敗を許容する書き方があります。
import pytest @pytest.mark.xfail def test_func(): assert False
こんな感じです。 @pytest.mark.xfail
を書くと、「このテストは失敗する」ということをマークすることができます。
詳細は、ドキュメントをどうぞ。
他にも pytest.mark.skip
とか pytest.mark.skipif
とかもあります。
例えば、先日紹介したpytest-watchでテスト回しているときに、リファクタリングの修正を入れたらテストが大量にこけるようになったて、テスト一つ一つに対して、修正を検討しないといけないんだけど、まとめて検討しにくいときに使ってたりします。
複数の問題が絡まっているときも、問題を一つずつ解消していきたいので、原因を確かめて、原因を認識したテストケースは修正を後回しにするために、xfailをつけたりしてます。
pytestでクラスやメソッド指定でテストを実行することもできますが、できればpytest-watchである程度の範囲をまとめてテストしながら修正していきたいので、そんな進め方をしてたりします。