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)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_bdd_md_report-1.0.6.tar.gz | 9.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|