カバレッジしたい(coverage
)
$ coverage run -m pytest # pytestと併用
$ coverage run report # ターミナルに出力
$ coverage html # HTMLを生成
$ pytest --cov=パッケージ名 --cov-report=term --cov-report=html
coverage
パッケージもしくはpytest-cov
パッケージで
テストコードのカバレッジを確認できます。
カバレッジとは、テストを実行したときに、 ソースコードのどこ部分が実際に実行されたかを示す指標です。 よく使われるのは 行カバレッジ(Line Coverate) で 「全体の行数のうち、何行が実行されたか」をパーセンテージで示します。
注釈
カバレッジは、書かれたコードに対して、どれだけテストが通っているかという値です。 常に100%にするするというものでもなく、 100%だからバグがないというわけでもない、 ということに留意が必要です。
設定ファイルしたい(pyproject.toml
)
1[tool.coverage.run]
2branch = true
3source = ["パッケージ名"]
4
5[tool.coverage.report]
6# 除外対象のファイル
7# - ユニットテストのコード
8# - __init__.py
9omit = [
10 "tests/*",
11 "**/__init__.py",
12]
13# 除外対象の行
14# - 明示的に除外した行
15# - 実行用のエントリーポイント(__main__)
16exclude_lines = [
17 "pragma: no cover",
18 "if __name__ == .__main__.:",
19]
20
21show_missing = true
22skip_covered = true
23
24[tool.pytest.ini_options]
25addopts = "--cov=パッケージ名 --cov-report=term --cov-report=html"
pyproject.toml
に
coverage
とpytest
の設定をまとめて整理できます。
カバレッジ測定から除外するファイルや行を設定できます。
branch = false
は「各行のコードが実行されたかどうか」だけですが、
branch = true
では「if文や論理演算の各分岐も実行されたかどうか」まで確認できます。
設定ファイルしたい(.coveragerc
)
[run]
branch = True
source = パッケージ名
[report]
omit =
tests/*
*/__init__.py
exclude_lines =
pragma: no cover
if __name__ == "__main__":
show_missing = True
skip_covered = True
coverage
専用のオプションは
.coveragerc
にINI形式で設定できます。