Skip to main content

A pytest plugin to generate test outcomes reports with markdown table format.

Project description

Summary

PyPI package version Supported Python versions Supported Python implementations CI status of Linux/macOS/Windows CodeQL

A pytest plugin to generate test outcomes reports with markdown table format.

Installation

pip install pytest-md-report

Usage

pytest --md-report examples/
https://github.com/thombashi/pytest-md-report/blob/master/ss/pytest_md_report_example.png

Output example

Other examples

Increase verbosity level (--md-report-verbose option):

pytest --md-report --md-report-verbose=1 examples/
https://github.com/thombashi/pytest-md-report/blob/master/ss/pytest_md_report_example_verbose.png

Output example (verbose)

Not rendering results of zero value (--md-report-zeros emmpty option):

pytest --md-report --md-report-zeros empty --md-report-color never examples/
|         filepath         | passed | failed | error | skipped | xfailed | xpassed | SUBTOTAL |
| ------------------------ | -----: | -----: | ----: | ------: | ------: | ------: | -------: |
| examples/test_error.py   |        |        |     2 |         |         |         |        2 |
| examples/test_failed.py  |        |      2 |       |         |         |         |        2 |
| examples/test_pass.py    |      2 |        |       |         |         |         |        2 |
| examples/test_skipped.py |        |        |       |       2 |         |         |        2 |
| examples/test_xfailed.py |        |        |       |         |       2 |         |        2 |
| examples/test_xpassed.py |        |        |       |         |         |       2 |        2 |
| TOTAL                    |      2 |      2 |     2 |       2 |       2 |       2 |       12 |

Generate GitHub Flavored Markdown (GFM) report:

pytest --md-report --md-report-flavor gfm examples/

GFM rendering result can be seen at here.

Config file examples

You can set configurations with pyproject.toml or setup.cfg as follows.

Example of pyproject.toml:
[tool.pytest.ini_options]
md_report = true
md_report_verbose = 0
md_report_color = "auto"
Example of setup.cfg:
[tool:pytest]
md_report = True
md_report_verbose = 0
md_report_color = auto

Add report to pull requests

You can add test reports to pull requests by GitHub actions workflow like the below:

name: md-report

on:
  pull_request:

jobs:
  run-tests:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
          cache: pip

      - name: Install dependencies
        run: pip install --upgrade pytest-md-report

      - name: Run tests
        run: |
          report_file=md_report.md
          echo "REPORT_FILE=${report_file}" >> "$GITHUB_ENV"
          pytest --md-report --md-report-flavor gfm --md-report-output "$report_file"

      - name: Render reports to the PR when tests fail
        if: failure()
        env:
          GH_TOKEN: ${{ github.token }}
          PR_NUMBER: ${{ github.event.number }}
        run: |
          if [ -f "$REPORT_FILE" ]; then
            gh pr comment $PR_NUMBER --body-file "$REPORT_FILE"
          fi
https://github.com/thombashi/pytest-md-report/blob/master/ss/md-report_gha.png

Rendering result

Add report to pull requests: only failed tests

You can exclude specific test outcomes from the report by using the --md-report-exclude-outcomes option. The below example excludes passed, skipped, and xpassed test outcomes from the report and posts the report to the pull request when tests fail with verbose output.

name: md-report

on:
  pull_request:

jobs:
  run-tests:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
          cache: pip

      - name: Install dependencies
        run: pip install --upgrade pytest-md-report

      - name: Run tests
        run: |
          report_file=md_report.md
          echo "REPORT_FILE=${report_file}" >> "$GITHUB_ENV"
          pytest -v --md-report --md-report-flavor gfm --md-report-exclude-outcomes passed skipped xpassed --md-report-output "$report_file"

      - name: Render reports to the PR when tests fail
        if: failure()
        env:
          GH_TOKEN: ${{ github.token }}
          PR_NUMBER: ${{ github.event.number }}
        run: |
          if [ -f "$REPORT_FILE" ]; then
            gh pr comment $PR_NUMBER --body-file "$REPORT_FILE"
          fi
https://github.com/thombashi/pytest-md-report/blob/master/ss/md-report_exclude_outcomes_verbose_output.png

Rendering result

Options

Command options

generate test outcomes report with markdown table format:
  --md-report           Create a Markdown report. you can also specify the value
                        with PYTEST_MD_REPORT environment variable.
  --md-report-verbose=VERBOSITY_LEVEL
                        Verbosity level for pytest-md-report.
                        If not set, use the verbosity level of pytest.
                        Defaults to 0.
                        you can also specify the value with
                        PYTEST_MD_REPORT_VERBOSE environment variable.
  --md-report-output=FILEPATH
                        Path to a file to the outputs test report.
                        Overwrite a file content if the file already exists.
                        you can also specify the value with
                        PYTEST_MD_REPORT_OUTPUT environment variable.
  --md-report-tee       output test report for both standard output and a file.
                        you can also specify the value with PYTEST_MD_REPORT_TEE
                        environment variable.
  --md-report-color={auto,text,never}
                        How coloring output reports.
                        auto: detect the output destination and colorize reports
                        appropriately with the output.
                        for terminal output, render colored (text and
                        background) reports using ANSI escape codes.
                        for file output, render the report without color.
                        text: render colored text reports by using ANSI escape
                        codes.
                        never: render report without color.
                        Defaults to 'auto'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_COLOR environment variable.
  --md-report-margin=MARGIN
                        Margin size for each cell.
                        Defaults to 1.
                        you can also specify the value with
                        PYTEST_MD_REPORT_MARGIN environment variable.
  --md-report-zeros={number,empty}
                        Rendering method for results of zero values.
                        number: render as a digit number (0).
                        empty: not rendering.
                        Automatically set to 'number' when the CI environment
                        variable is set to
                        TRUE (case insensitive) to display reports correctly at
                        CI services.
                        Defaults to 'number'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_ZEROS environment variable.
  --md-report-success-color=MD_REPORT_SUCCESS_COLOR
                        Text color of succeeded results.
                        Specify a color name (one of the black/red/green/yellow/
                        blue/magenta/cyan/white/lightblack/lightred/lightgreen/l
                        ightyellow/lightblue/lightmagenta/lightcyan/lightwhite)
                        or a color code (e.g. #ff1020).
                        Defaults to 'light_green'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_SUCCESS_COLOR environment variable.
  --md-report-skip-color=MD_REPORT_SKIP_COLOR
                        Text color of skipped results.
                        Specify a color name (one of the black/red/green/yellow/
                        blue/magenta/cyan/white/lightblack/lightred/lightgreen/l
                        ightyellow/lightblue/lightmagenta/lightcyan/lightwhite)
                        or a color code (e.g. #ff1020).
                        Defaults to 'light_yellow'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_SKIP_COLOR environment variable.
  --md-report-error-color=MD_REPORT_ERROR_COLOR
                        Text color of failed results.
                        Specify a color name (one of the black/red/green/yellow/
                        blue/magenta/cyan/white/lightblack/lightred/lightgreen/l
                        ightyellow/lightblue/lightmagenta/lightcyan/lightwhite)
                        or a color code (e.g. #ff1020).
                        Defaults to 'light_red'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_ERROR_COLOR environment variable.
  --md-report-flavor={common_mark,github,gfm,jekyll,kramdown}
                        Markdown flavor of the output report.
                        Defaults to 'common_mark'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_FLAVOR environment variable.
  --md-report-exclude-outcomes=MD_REPORT_EXCLUDE_OUTCOMES [MD_REPORT_EXCLUDE_OUTCOMES ...]
                        List of test outcomes to exclude from the report.
                        When specifying as an environment variable, pass a
                        comma-separated string
                        (e.g. 'passed,skipped').
                        Defaults to '[]'.
                        you can also specify the value with
                        PYTEST_MD_REPORT_EXCLUDE_OUTCOMES environment variable.

ini-options

[pytest] ini-options in the first pytest.ini/tox.ini/setup.cfg/pyproject.toml (pytest 6.0.0 or later) file found:

md_report (bool):     Create a Markdown report.
md_report_verbose (string):
                      Verbosity level for pytest-md-report. If not set, use
                      the verbosity level of pytest. Defaults to 0.
md_report_color (string):
                      How coloring output reports. auto: detect the output
                      destination and colorize reports appropriately with the
                      output. for terminal output, render colored (text and
                      background) reports using ANSI escape codes. for file
                      output, render the report without color. text: render
                      colored text reports by using ANSI escape codes. never:
                      render report without color. Defaults to 'auto'.
md_report_output (string):
                      Path to a file to the outputs test report. Overwrite a
                      file content if the file already exists.
md_report_tee (string):
                      output test report for both standard output and a file.
md_report_margin (string):
                      Margin size for each cell. Defaults to 1.
md_report_zeros (string):
                      Rendering method for results of zero values. number:
                      render as a digit number (0). empty: not rendering.
                      Automatically set to 'number' when the CI environment
                      variable is set to TRUE (case insensitive) to display
                      reports correctly at CI services. Defaults to 'number'.
md_report_success_color (string):
                      Text color of succeeded results. Specify a color name
                      (one of the black/red/green/yellow/blue/magenta/cyan/whi
                      te/lightblack/lightred/lightgreen/lightyellow/lightblue/
                      lightmagenta/lightcyan/lightwhite) or a color code (e.g.
                      #ff1020). Defaults to 'light_green'.
md_report_skip_color (string):
                      Text color of skipped results. Specify a color name (one
                      of the black/red/green/yellow/blue/magenta/cyan/white/li
                      ghtblack/lightred/lightgreen/lightyellow/lightblue/light
                      magenta/lightcyan/lightwhite) or a color code (e.g.
                      #ff1020). Defaults to 'light_yellow'.
md_report_error_color (string):
                      Text color of failed results. Specify a color name (one
                      of the black/red/green/yellow/blue/magenta/cyan/white/li
                      ghtblack/lightred/lightgreen/lightyellow/lightblue/light
                      magenta/lightcyan/lightwhite) or a color code (e.g.
                      #ff1020). Defaults to 'light_red'.
md_report_flavor (string):
                      Markdown flavor of the output report. Defaults to
                      'common_mark'.
md_report_exclude_outcomes (args):
                      List of test outcomes to exclude from the report. When
                      specifying as an environment variable, pass a
                      comma-separated string (e.g. 'passed,skipped'). Defaults
                      to '[]'.

Dependencies

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_md_report-0.6.0.tar.gz (204.8 kB view hashes)

Uploaded Source

Built Distribution

pytest_md_report-0.6.0-py3-none-any.whl (13.7 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