Pytest plugin for Proofy test reporting
Project description
pytest-proofy
Pytest plugin for Proofy test reporting with real-time results and rich metadata support.
Features
- Multiple Reporting Modes: Live, Lazy, and Batch reporting
- Rich Metadata: Decorators for test description, severity, tags, and custom attributes
- Attachment Support: Add screenshots, logs, and other files to test results
- Flexible Configuration: CLI, environment variables, and pytest.ini support
- Local Backup: Automatic fallback to local JSON export
Installation
pip install pytest-proofy
Quick Start
Basic Usage
pytest --proofy-token YOUR_TOKEN \
--proofy-project-id 123
Configuration
Command Line Options
# Core options
--proofy-mode {live,batch,lazy} # Reporting mode
--proofy-api-base URL # Proofy API base URL
--proofy-token TOKEN # API authentication token
--proofy-project-id ID # Project ID
# Run options
--proofy-run-id ID # Existing run ID to append to
--proofy-run-name NAME # Custom run name
--proofy-run-attributes ATTRS # Custom run attributes (key=value,key2=value2)
# Batch options
--proofy-batch-size N # Results per batch (default: 10)
# Output options
--proofy-output-dir DIR # Local backup directory
--proofy-always-backup # Always create local backup
Environment Variables
export PROOFY_MODE=live
export PROOFY_API_BASE=https://api.proofy.dev
export PROOFY_TOKEN=your-token-here
export PROOFY_PROJECT_ID=123
pytest.ini Configuration
[pytest]
proofy_mode = lazy
proofy_api_base = https://api.proofy.dev
proofy_token = your-token-here
proofy_project_id = 123
proofy_batch_size = 20
proofy_output_dir = test-artifacts
proofy_run_attributes = environment=staging,version=1.2.3
Reporting Modes
Live Mode (Default)
Real-time test reporting with immediate server updates:
pytest --proofy-mode live
- Creates test result when test starts (IN_PROGRESS status)
- Updates result when test finishes with final outcome
- Uploads attachments immediately
- Best for interactive development and debugging
Lazy Mode
Sends complete results after test execution:
pytest --proofy-mode lazy
- Collects results during execution
- Sends all results in batches at session end
- Best for CI/CD environments
Batch Mode
Groups results and sends in configurable batches:
pytest --proofy-mode batch --proofy-batch-size 50
- Collects results during execution
- Sends results in batches
- Optimized for large test suites
- Configurable batch size
Run Attributes
Run attributes allow you to add metadata to your test runs, such as environment information, version numbers, and other custom data. Proofy automatically collects system information (Python version, OS, framework version) and allows you to add custom attributes.
Automatic System Attributes
The following attributes are automatically collected for every run:
__proofy_python_version- Python version (e.g., "3.11.0")__proofy_platform- Platform details (e.g., "macOS-14.0-arm64")__proofy_framework- Test framework (e.g., "pytest")__proofy_framework_version- Framework version (e.g., "7.4.0")
Adding Custom Run Attributes
Via Command Line
pytest --proofy-run-attributes environment=production,version=1.2.3,branch=main
Via Environment Variable
export PROOFY_RUN_ATTRIBUTES="environment=staging,version=2.0.0"
pytest
Via pytest.ini
[pytest]
proofy_run_attributes = environment=development,team=backend
Via conftest.py
# conftest.py
import proofy
def pytest_sessionstart(session):
"""Set run attributes at session start."""
proofy.add_run_attributes(
environment="staging",
version="1.2.3",
build_number="456",
branch="feature/new-api"
)
Via Runtime API in Tests
import proofy
def test_example():
# You can also set run attributes from within tests
# (though this is less common - usually set at session start)
proofy.set_run_attribute("custom_key", "custom_value")
proofy.add_run_attributes(
environment="production",
region="us-east-1"
)
# Get all run attributes
attrs = proofy.get_run_attributes()
assert "environment" in attrs
Using Decorators and Runtime API
Decorators
from proofy import name, description, severity, tags, attributes
@name("User Login Test")
@description("Validates user authentication with valid credentials")
@severity("critical")
@tags("auth", "smoke")
@attributes(component="auth", browser="chrome")
def test_user_login():
# Test implementation
assert login("user", "pass") == True
Runtime API
from proofy import (
set_name, set_description, set_severity,
add_tag, add_attributes, add_attachment, ArtifactType
)
def test_dynamic_metadata():
set_name("Dynamic Test Name")
set_description("This description is set at runtime")
set_severity("high")
# Test logic here
result = perform_test()
if result.screenshot:
add_attachment(
result.screenshot,
name="test_screenshot",
mime_type="image/png",
artifact_type=ArtifactType.SCREENSHOT
)
add_attributes(
execution_time=result.duration,
environment="staging"
)
Attachments
Add files to test results for better debugging:
from proofy import add_attachment, ArtifactType
def test_with_attachments():
# Your test code
take_screenshot("failure.png")
save_logs("test.log")
# Add attachments
add_attachment("failure.png", name="Failure Screenshot", artifact_type=ArtifactType.SCREENSHOT)
add_attachment("test.log", name="Test Logs", mime_type="text/plain")
Troubleshooting
Common Issues
-
Authentication Errors
# Verify token is correct curl -H "Authorization: Bearer YOUR_TOKEN" https://api.proofy.dev/health
-
Large Test Suites
# Use batch mode with larger batches pytest --proofy-mode batch --proofy-batch-size 100
Debug Mode
pytest --proofy-mode lazy -v -s
Local Backup
pytest --proofy-always-backup --proofy-output-dir ./test-results
Status mappings:
- pytest
passed→PASSED (1) - pytest
failed→FAILED (2) - pytest
error→BROKEN (3) - pytest
skipped→SKIPPED (4)
Development
# In monorepo root
uv venv .venv && source .venv/bin/activate
uv pip install -e ../proofy-commons -e .[dev]
uv run -q pytest -n auto
License
Apache-2.0 — see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_proofy-0.1.0.tar.gz.
File metadata
- Download URL: pytest_proofy-0.1.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4060947699f47b4c7ac6dd3f2e0c052ba7af7133b01755aba1247b6d9c93a13
|
|
| MD5 |
67d8129653172d53a6afa3baa40d324d
|
|
| BLAKE2b-256 |
9fe46afca1543ed85ec37f4766a75fe55e7d23418e3ef812e7ad52f4c2ad814e
|
Provenance
The following attestation bundles were made for pytest_proofy-0.1.0.tar.gz:
Publisher:
release.yml on getproofy/proofy-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pytest_proofy-0.1.0.tar.gz -
Subject digest:
d4060947699f47b4c7ac6dd3f2e0c052ba7af7133b01755aba1247b6d9c93a13 - Sigstore transparency entry: 603495406
- Sigstore integration time:
-
Permalink:
getproofy/proofy-python@05364b71600c14ea220908f5c5754b0f7ec3bc37 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/getproofy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@05364b71600c14ea220908f5c5754b0f7ec3bc37 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pytest_proofy-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pytest_proofy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d2d61db0920732dbb9c3b59fb205046d3a2ea264e8166c97f19e93dad48edcc
|
|
| MD5 |
451c02c0cea2187ad66133ef6362f84b
|
|
| BLAKE2b-256 |
bf4d778b61df1e43f1f392683f695ac10d35706881484352a7ae5537e4398f9d
|
Provenance
The following attestation bundles were made for pytest_proofy-0.1.0-py3-none-any.whl:
Publisher:
release.yml on getproofy/proofy-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pytest_proofy-0.1.0-py3-none-any.whl -
Subject digest:
3d2d61db0920732dbb9c3b59fb205046d3a2ea264e8166c97f19e93dad48edcc - Sigstore transparency entry: 603495449
- Sigstore integration time:
-
Permalink:
getproofy/proofy-python@05364b71600c14ea220908f5c5754b0f7ec3bc37 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/getproofy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@05364b71600c14ea220908f5c5754b0f7ec3bc37 -
Trigger Event:
push
-
Statement type: