Test Reports
Testudos can generate a test report from your pytest run: a JSON file, plus a branded PDF. Pass --testudos-generate-report to enable it. Follow the Quickstart to install Testudos for your platform.
Running
Pass --testudos-generate-report:
pytest --testudos-generate-reportEach run gets its own folder under testudos-reports/ in your current directory, containing report.json, report.pdf, and an assets/ folder with any captured screenshots.
testudos: wrote testudos-reports/2026-09-08_143000/report.jsontestudos: wrote testudos-reports/2026-09-08_143000/report.pdfFlags
| Flag | Effect |
|---|---|
--testudos-generate-report | Enable report collection for this run. Required - without it, none of the flags below do anything. |
--testudos-session-name=NAME | Name this run’s session folder (default: a timestamp). |
--testudos-session-path=PATH | Write this run’s session to an exact directory instead. |
--testudos-no-json-report | Disable JSON output. |
--testudos-no-pdf-report | Disable PDF rendering. |
--testudos-settings=PATH | Apply a JSON settings file for branding and custom marker labels. See Customizing the report or Markers. |
If both --testudos-session-path and --testudos-session-name are given, --testudos-session-path wins. --testudos-no-json-report and --testudos-no-pdf-report are independent, so disabling one doesn’t affect the other.
Customizing the report (settings file)
A JSON settings file sets the title, company name, logo, brand color, screenshot inclusion, and custom marker labels, all at once:
{ "title": "Q3 Regression", "company_name": "ABCD QA", "logo_path": "abcd-logo.svg", "brand_color": "#1565C0", "include_screenshots": true, "custom_markers": [ {"name": "owner", "label": "Owned by"} ]}| Property | Type | Default | Notes |
|---|---|---|---|
title | string | "Testudos Test Report" | Report headline. |
company_name | string or null | null | Shown under the title when set. |
logo_path | string or null | null (packaged Testudos logo) | SVG or raster (PNG, JPEG, GIF, BMP, TIFF, WEBP, ICO). |
brand_color | string, "#RRGGBB" hex | "#2F54A1" | Color of the thin rule line under the header. |
include_screenshots | boolean | true | Whether captured screenshots are embedded in the PDF. |
custom_markers | list of {"name": string, "label": string} | [] | Registers and labels your own markers. |
Save it as testudos-settings.json in your project root and pytest picks it up automatically, no flag needed. If it isn’t found, pytest prints a note and renders with plain defaults - never an error.
Want a different name or location? Pass it explicitly, which always wins over the auto-discovered file:
pytest --testudos-generate-report --testudos-settings=settings.jsonOnly fields present in the file override their defaults, so a settings file can set just the one thing you care about.
Tagging tests (optional)
Tag tests with Testudos’s built-in tc_desc/tc_req_id/tc_req_link markers, or your own custom markers, for extra detail in each test’s report entry - see Markers for how to use and register them.
Screenshots
Any test using the testudos_client/testudos_app fixtures gets a screenshot of the AUT captured automatically - pass, fail, or skip - embedded in the PDF next to that test’s own detail.
include_screenshots: false in the settings file only stops the PDF from embedding them - screenshots are still captured and saved to assets/ in the session directory, and still referenced from report.json, either way.
Re-rendering or rebranding later
Since the underlying data is saved as JSON, you can regenerate the PDF later - after fixing a title or swapping a logo - without rerunning your tests, via the testudos-report CLI:
testudos-report --session-name MySession --title "My Title" --logo my-logo.svg -o rebrand.pdfOr point at an exact session directory, and apply a settings file the same way:
testudos-report --session-path testudos-reports/MySession --settings settings.json -o rebrand.pdf--title/--logo on the command line win over the settings file, which wins over the defaults. Everything else (company name, brand color, screenshot toggle, custom marker labels) needs the JSON settings file.
Reading the report
The PDF has four sections:
- Summary - title, company, when it was generated, pytest version, and a pass/fail/skip/error count table.
- Warnings - every pytest warning not tied to a specific test (e.g. an unregistered custom marker). Always shown, even as “No warnings.”
- Test Overview - a flat, file-by-file list of every test with its status, linking down to its full detail.
- Test Cases - one block per test: name, status, timestamp, failure/skip message, its tags, any warnings raised during that test, and its screenshot if captured.