Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A plugin for coverage.py to measure Django template execution

License

NotificationsYou must be signed in to change notification settings

coveragepy/django_coverage_plugin

Repository files navigation

Acoverage.py plugin to measure test coverage of Django templates.

Package stabilityLatest PyPI VersionApache 2.0 License
Supported Python VersionsSupported Django Versions
Sponsor me on GitHubnedbat on Blueskynedbat on Mastodon

Supported on:

  • Python: 3.10 through 3.14.
  • Django: 3.2 through 5.2.
  • Coverage.py: 6.x or higher.

The plugin is pip-installable:

$ python3 -m pip install django_coverage_plugin

To run it, add this setting to your.coveragerc file:

[run]plugins = django_coverage_plugin

Then run your tests undercoverage.py.

You will see your templates listed in your coverage report along withyour Python modules.

If you get adjango.core.exceptions.ImproperlyConfigured error,you need to set theDJANGO_SETTINGS_MODULE environment variable.

Template coverage only works if your Django templates have debugging enabled.If you getdjango_coverage_plugin.plugin.DjangoTemplatePluginException:Template debugging must be enabled in settings, or if no templates getmeasured, make sure you haveTEMPLATES.OPTIONS.debug set to True inyour settings file:

TEMPLATES= [    {        ...'OPTIONS': {'debug':True,        },    },]

Configuration

The Django template plugin uses some existing settings from your.coveragerc file. Thesource=,include=, andomit= optionscontrol what template files are included in the report.

The plugin can find unused template and include them in your results. Bydefault, it will look for files in your templates directory with an extensionof.html,.htm, or.txt. You can configure it to look for a different set ofextensions if you like:

[run]plugins = django_coverage_plugin[django_coverage_plugin]template_extensions = html, txt, tex, email

If you usepyproject.toml for tool configuration use:

[tool.coverage.run]plugins = [    'django_coverage_plugin',][tool.coverage.django_coverage_plugin]template_extensions = 'html, txt, tex, email'

Caveats

Coverage.py can't tell whether a{% blocktrans %} tag used thesingular or plural text, so both are marked as used if the tag is used.

What the? How?

The technique used to measure the coverage is the same that DmitryTrofimov used indtcov, but integrated into coverage.py as a plugin,and made more performant. I'd love to see how well it works in a realproduction project. If you want to help me with it, feel free to drop mean email.

The coverage.py plugin mechanism is designed to be generally useful forhooking into the collection and reporting phases of coverage.py,specifically to support non-Python files. If you have non-Python filesyou'd like to support in coverage.py, let's talk.

Tests

To run the tests:

$ python3 -m pip install -r requirements.txt$ tox

History

v3.2.0 — 2025-10-05

Drop Python 3.9 and Django 2.2. Add Python 3.14.

v3.1.1 — 2025-06-15

Support changes: dropped Python 3.8, added Python 3.13. Added Django 5.2.

v3.1.0 — 2023-07-10

Dropped support for Python 3.7 and Django 1.x. Declared support for Python3.12.

v3.0.0 — 2022-12-06

Dropped support for Python 2.7, Python 3.6, and Django 1.8.

v2.0.4 — 2022-10-31

Declare our support for Python 3.11 and Django 4.1.

v2.0.3 — 2022-05-04

Add support for Django 4.0.

v2.0.2 — 2021-11-11

If a non-UTF8 file was found when looking for templates, it would fail whenreading during the reporting phase, ending execution. This failure is nowraised in a way that can be ignored with a .coveragerc setting of[report]ignore_errors=True (issue 78).

When usingsource=., an existing coverage HTML report directory would befound and believed to be unmeasured HTML template files. This is now fixed.

v2.0.1 — 2021-10-06

Test and claim our support on Python 3.10.

v2.0.0 — 2021-06-08

Drop support for Python 3.4 and 3.5.

A setting is available:template_extensions lets you set the fileextensions that will be considered when looking for unused templates(requested inissue 60).

Fix an issue on Windows where file names were being comparedcase-sensitively, causing templates to be missed (issue 46).

Fix an issue (issue 63) where tag libraries can't be found if importedduring test collection. Thanks to Daniel Izquierdo for the fix.

v1.8.0 — 2020-01-23

Add support for:

  • Coverage 5

v1.7.0 — 2020-01-16

Add support for:

  • Python 3.7 & 3.8
  • Django 2.2 & 3.0

v1.6.0 — 2018-09-04

Add support for Django 2.1.

v1.5.2 — 2017-10-18

Validates support for Django version 2.0b1. Improves discovery oftemplate files.

v1.5.1a — 2017-04-05

Validates support for Django version 1.11. Testing for new packagemaintainer Pamela McA'Nulty

v1.5.0 — 2017-02-23

Removes support for Django versions below 1.8. Validates support forDjango version 1.11b1

v1.4.2 — 2017-02-06

Fixes another instance ofissue 32, which was the result of aninitialization order problem.

v1.4.1 — 2017-01-25

Fixesissue 32, which was the result of an initialization orderproblem.

v1.4 — 2017-01-16

Django 1.10.5 is now supported.

Checking settings configuration is deferred so that settings.py isincluded in coverage reporting. Fixesissue 28.

Only thedjango.template.backends.django.DjangoTemplates templateengine is supported, and it must be configured with['OPTIONS']['debug'] = True. Fixesissue 27.

v1.3.1 — 2016-06-02

Settings are read slightly differently, so as to not interfere withprograms that don't need settings. Fixesissue 18.

v1.3 — 2016-04-03

Multiple template engines are allowed. Thanks, Simon Charette.

v1.2.2 — 2016-02-01

No change in code, but Django 1.9.2 is now supported.

v1.2.1 — 2016-01-28

The template debug settings are checked properly for people still usingTEMPLATE_DEBUG in newer versions of Django.

v1.2 — 2016-01-16

Check if template debugging is enabled in the settings, and raise avisible warning if not. This prevents mysterious failures of theplugin, and fixesissue 17.

Potential Django 1.9 support is included, but the patch to Django hasn'tbeen applied yet.

v1.1 — 2015-11-12

Explicitly configure settings if need be to get things to work.

v1.0 — 2015-09-20

First version :)

About

A plugin for coverage.py to measure Django template execution

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors13


[8]ページ先頭

©2009-2025 Movatter.jp