Skip to main content

Generate Pytest reports with templates

Project description

PyPI version

Generate Pytest reports from templates. You may use one of the available templates on PyPI (like the reference template pytest-reporter-html1), inherit them in your own template to tweak their content and appearence or make your own from scratch.

Anything text based can be generated like HTML, LaTeX, CSV et.c.

Installation

You can install “pytest-reporter” via pip from PyPI:

$ pip install pytest-reporter

Usage

Specify the template you want to use and the output path of the report:

$ pytest --template-dir=templates --template=report.html --report=report.html

Writing templates

This plugin does not come with built-in support for any template engines, it is up to each template to implement the rendering (or use another template plugin as base). A minimal template may just implement the pytest_reporter_render hook.

This is a very basic Jinja2 template implementation:

from jinja2 import Environment, FileSystemLoader, TemplateNotFound

def pytest_reporter_render(template_name, dirs, context):
    env = Environment(loader=FileSystemLoader(dirs))
    try:
        template = env.get_template(template_name)
    except TemplateNotFound:
        return
    return template.render(context)

See pytest-reporter-html1 for a full reference implementation.

The template context

The standard context available for all templates include the following:

  • config: Config

  • session: Session

  • started: Unix timestamp

  • ended: Unix timestamp

  • warnings: List of warnings.WarningMessage

  • tests: List of dictionaries with the following keys:

    • item: Item

    • phases: List of dictionaries with the following keys:

      • call: CallInfo

      • report: TestReport

      • log_records: List of logging.LogRecord

      • status: Dictionary with the following keys:

        • category: Category of the status or empty string

        • letter: Single letter version of status or empty string

        • word: Uppercase word version of status or empty string

        • style: Dictionary with {"color": True} or empty dictionary

    • status: Dictionary with the following keys:

      • category: Category of the test status

      • letter: Single letter version of test status

      • word: Uppercase word version of test status

      • style: Dictionary with {"color": True} or empty dictionary

The context may be extended or modified using the following methods:

  • config.template_context

  • The template_context fixture

  • The function_context fixture (for the current tests item)

  • The pytest_reporter_context() hook

Hooks

See hooks.py for a complete list of hooks available.

License

Distributed under the terms of the MIT license, “pytest-reporter” is free and open source software

Issues

If you encounter any problems, please file an issue along with a detailed description.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-reporter-0.3.0.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

pytest_reporter-0.3.0-py3-none-any.whl (6.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page