Skip to main content

pytest-bdd-md-report

Markdown test report formatter for pytest-bdd with pytest-playwright screenshot support.

Installation

pip install pytest-bdd-md-report

Or with uv:

uv add pytest-bdd-md-report

Optional dependencies

# With pytest-playwright support (for screenshot capture)
pip install pytest-bdd-md-report[playwright]

# With pytest-bdd support
pip install pytest-bdd-md-report[bdd]

# All optional dependencies
pip install pytest-bdd-md-report[all]

Quick Start

# Generate a markdown report
pytest --markdown-report=test_report.md

# Include detailed step information (Given/When/Then)
pytest --markdown-report=test_report.md --markdown-report-verbose

# Include screenshots for failed tests (requires pytest-playwright)
pytest --markdown-report=test_report.md --markdown-report-screenshots --screenshot=only-on-failure

CLI Options

Option Description
--markdown-report=path Output path for the Markdown report (required to enable)
--markdown-report-verbose Include detailed step information (Given/When/Then)
--markdown-report-template=path Custom Jinja2 template file path
--markdown-report-screenshots Embed failure screenshots in report
--markdown-report-embed-images Base64 encode screenshots directly in markdown

Output Example

Basic Mode

## Summary
- **Total Tests**: 3
- **Passed**: 2
- **Failed**: 1

## Test Results

### Feature: Login

#### [PASS] Scenario: Successful login
- **Status**: PASSED
- **Duration**: 1.73s

Verbose Mode (--markdown-report-verbose)

#### [PASS] Scenario: Successful login
- **Status**: PASSED
- **Duration**: 1.73s

**Steps:**
1. [PASS] **Given** the login page is displayed (0.45s)
2. [PASS] **When** user enters valid credentials (0.98s)
3. [PASS] **Then** dashboard is shown (0.30s)

Custom Templates

Create a custom Jinja2 template to customize the report format.

Template Variables

Variable Type Description
generation_time str Report generation timestamp
summary.total_tests int Total test count
summary.passed int Passed count
summary.failed int Failed count
summary.skipped int Skipped count
summary.total_duration str Total execution time
features dict Feature name to scenario list mapping

Example Custom Template

# Test Report

Generated: {{ generation_time }}

| Metric | Value |
|--------|-------|
| Total | {{ summary.total_tests }} |
| Passed | {{ summary.passed }} |
| Failed | {{ summary.failed }} |

{% for feature_name, scenarios in features.items() %}
## {{ feature_name }}

{% for scenario in scenarios %}
- **{{ scenario.scenario_name }}**: {{ scenario.status }}
{% endfor %}
{% endfor %}

Screenshot Support

Capture screenshots for failed tests using pytest-playwright:

# Screenshots saved as file references
pytest --markdown-report=test_report.md --markdown-report-screenshots --screenshot=only-on-failure

# Screenshots embedded as Base64 (single-file report)
pytest --markdown-report=test_report.md --markdown-report-screenshots --markdown-report-embed-images --screenshot=only-on-failure

Note: --screenshot=only-on-failure is a pytest-playwright option. Screenshots are saved to test-results/ directory.

Requirements

  • Python >= 3.10
  • pytest >= 7.0.0
  • jinja2 >= 3.1.0

Optional

  • pytest-bdd >= 6.0.0 (for BDD-style tests)
  • pytest-playwright >= 0.4.0 (for screenshot capture)

License

MIT License

Metadata

Release files for pytest-bdd-md-report 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-bdd-md-report 1.0.6
File Size Uploaded
pytest_bdd_md_report-1.0.6.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-bdd-md-report 1.0.6
File Interpreter ABI Platform
pytest_bdd_md_report-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / pytest_bdd_md_report-1.0.6.tar.gz

Download URL pytest_bdd_md_report-1.0.6.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
65d06c470c506b151bd40e62fc6151d563632edfa74d21ddc6495055d8c44276
BLAKE2b-256 checksum
How to use checksums
06bd54214923edcffdcdc913b833cbf446a569154e6acae85cb7868537ae5260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / pytest_bdd_md_report-1.0.6-py3-none-any.whl

Download URL pytest_bdd_md_report-1.0.6-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31597044aeca584f4b96959c085c08ea6c81f270bdc006b1ece9d8c3b7bd65fb
BLAKE2b-256 checksum
How to use checksums
2f4f8e450938fadcb3171f3154b9dc103fe1f4b368449a130cdea025d7ffb741
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page