ちんぱんの雑記

チラシの裏

pytest のカバレッジ出力に必要な設定

カバレッジを HTML 形式で出せたらいいなと思ったので、必要な設定などをまとめておこうと思う。備忘録も兼ねて。

 

事前にインストールしておくものはこの2つだった。

pip install coverage --timeout=9999
pip install pytest-cov --timeout=9999

 

--timeout=9999 は通信環境によっては必要な人がいるかもしれない。

 

 

いざ、カバレッジを出力しながらテストを実行する場合のコマンドは次のとおりだった。

pytest --cov-report=html --cov=test2

--cov-report=html これはこのまま流用できる。

このオプションをつけておけば、カバレッジのHTMLを出力してくれる。

 

--cov=XXX これは XXX の部分の網羅率を出力するということになる。

ここは結構大事かもしれない。

 

例えば、test_target というパッケージの網羅率だけ関心がある場合は、次のようになる。

--cov=test_target

 

pytest --help にも書いてある説明は次のとおり。

Path or package name to measure during execution (multi-allowed). Use --cov= to not do any source filtering and record everything.

なので、パスかパッケージ名を指定すればいい。

 

--cov= だけを指定した場合、なぜかすべての記録をしなかったことは気になっている…。

使い方が悪いのか?

 

ルートディレクトリーで --cov=. のように末尾にドットを指定すればルートディレクトリー配下のすべてのモジュールの網羅率を出力するので、これでもいいのかもしれない。

 

さて、コマンドで実行する場合のことがわかったのはいいが、

実際にテストをする場合、コマンドをいちいち打たないだろうなと思うと、

設定ファイルを作成する方法を学んだ方が良いのかもしれないな。

VSCode でポチポチしたら対象の網羅率を出力するように設定できれば最善なのかな。

 

その確認はまた後日になるかな、今日はここまで。