Reduce pragma no cover comments with tool.coverage.report exclude_also

If you’re using Coverage.py or pytest-cov in your Python project, you probably end up with # pragma: no cover comments all over the place to prevent odd lines from being marked as missing coverage, like this:

class Foobar:

  def do_something():  # pragma: no cover
    raise NotImplementedError()

You can reduce the need for these # pragma: no cover comments by configuring Coverage.py to ignore certain patterns by default. This can be configured in the pyproject.toml file like this:

[tool.coverage.report]
exclude_also = [
    "def __repr__",
    "if self.debug:",
    "if settings.DEBUG",
    "raise AssertionError",
    "raise NotImplementedError",
    "if 0:",
    "if False:",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:",
    "class .*\\bProtocol\\):",
    "@(abc\\.)?abstractmethod",
    "\\.\\.\\.",
]

Those are some common patterns that you will likely want to skip coverage for. With this configuration, you no longer need to add a # pragma: no cover comment on those lines, as they’ll be ignored by default.


Tech mentioned