カバレッジしたい(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.tomlcoveragepytestの設定をまとめて整理できます。 カバレッジ測定から除外するファイルや行を設定できます。

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形式で設定できます。