Skip to content
SPECIFICTION
Get listed

Coverage.py vs OpenClover

Coverage.py

coverage.readthedocs.io

OpenClover

openclover.org

Side by side

FigureCoverage.pyOpenClover
Price fromFreeFree
Free planYesYes
Free trial——
Open sourceYes—
Web—Yes
WindowsYesYes
macOSYesYes
LinuxYesYes
APIYes—
Self-hostedYes—
Plans published21
Spec score · Test Coverage Tools8.9 (#2)7.6 (#15)
Coverage typesIt measures statement coverage by default and can also measure branch coverage.It tracks global, per-test and distributed per-test coverage with method, statement and branch metrics.
IntegrationsOfficial examples cover pytest, unittest, and nose, and pytest commonly uses the pytest-cov plugin.Integrations include Ant, Maven, Gradle, Grails, Griffon, Jenkins, Bamboo, Eclipse, IntelliJ IDEA, Sonar and JIRA.
LicenseCoverage.py is licensed under the Apache 2.0 License.OpenClover software is licensed under Apache 2.0.
PurposeCoverage.py measures which parts of Python programs ran and identifies executable code that did not run, commonly to gauge test effectiveness.OpenClover is a code coverage tool for Java, Groovy and AspectJ.
Report formatsReports can be emitted as text, HTML, XML, LCOV, or JSON.Reports can be generated as HTML, XML, PDF, JSON and TEXT.

Plans

Coverage.py

  • Coverage.pyFree
  • FreeFree

Coverage.py pricing →

OpenClover

  • OpenCloverFree

OpenClover pricing →

In their own words

Coverage.py

Coverage.py measures which parts of Python programs run and highlights executable code that remains untouched, helping developers assess what their tests exercise. It measures statement coverage by default and can also track branch coverage. Reports are available as text, HTML, XML, LCOV, and JSON. Dynamic contexts can associate lines of execution with the test function that ran them. Coverage.py can run test suites through their usual command; pytest-cov is available but the documentation says most users do not need it. Third-party plugins can extend measurement to non-Python files, such as connecting executed Python to Django templates. Data is stored in a SQLite database, and advanced use can rely on its API. The current documentation lists Python 3.10 through 3.15 rc2 and PyPy3 versions 3.10 and 3.11. The tool provides ctrace, pytrace, and sysmon measurement cores; sysmon is faster for simple line and branch coverage but lacks support for dynamic contexts and plugins. Coverage.py is licensed under Apache 2.0 and runs on Linux, macOS, and Windows, with self-hosting available. It is free.

Visit coverage.readthedocs.io

OpenClover

OpenClover is a free code coverage tool for Java, Groovy and AspectJ. It tracks global, per-test and distributed per-test coverage using method, statement and branch metrics. More than 20 built-in code metrics are included, and custom metrics are supported. Coverage reports can be generated as HTML, XML, PDF, JSON or text. You can narrow coverage scope by paths, classes, methods, code blocks, statements, complexity or inline comments. For test optimization, OpenClover identifies tests to rerun when classes change, can run failing tests first, and can randomize test order. Integrations include Ant, Maven, Gradle, Grails, Griffon, Jenkins, Bamboo, Eclipse, IntelliJ IDEA, Sonar and JIRA. Dedicated test support covers JUnit 3 and 4, TestNG and Spock. Version 5.1.x supports JRE or JDK 8 through 25 and Groovy 3.x, 4.x and 5.x. The project is volunteer-maintained and Apache 2.0 licensed; community support typically responds within a few days.

Visit openclover.org