Configuration Reference¶
Complete reference for all VenomQA configuration options.
Configuration File¶
VenomQA reads configuration from venomqa.yaml in the project root.
YAML
# venomqa.yaml - Complete configuration reference
# ====================
# API Configuration
# ====================
base_url: "http://localhost:8000" # Base URL for all API requests
timeout: 30 # Request timeout in seconds
retry_count: 3 # Number of retry attempts
retry_delay: 1.0 # Base delay between retries (seconds)
# ====================
# Database Configuration
# ====================
db_url: "postgresql://qa:secret@localhost:5432/qa_test"
db_backend: "postgresql" # postgresql, sqlite, mysql
# ====================
# Infrastructure
# ====================
docker_compose_file: "docker-compose.qa.yml"
# ====================
# Execution
# ====================
parallel_paths: 1 # Max concurrent branch paths
fail_fast: false # Stop on first failure
# ====================
# Logging
# ====================
verbose: false # Enable verbose/debug output
capture_logs: true # Capture infrastructure logs
log_lines: 50 # Number of log lines to capture
# ====================
# Reporting
# ====================
report_dir: "reports" # Output directory for reports
report_formats: # Report formats to generate
- markdown
- junit
Configuration Options¶
API Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
base_url |
string | "http://localhost:8000" |
VENOMQA_BASE_URL |
Base URL for API requests |
timeout |
integer | 30 |
VENOMQA_TIMEOUT |
Request timeout (seconds) |
retry_count |
integer | 3 |
VENOMQA_RETRY_COUNT |
Retry attempts on failure |
retry_delay |
float | 1.0 |
VENOMQA_RETRY_DELAY |
Base delay between retries |
Database Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
db_url |
string | null |
VENOMQA_DB_URL |
Database connection URL |
db_backend |
string | "postgresql" |
VENOMQA_DB_BACKEND |
Database backend type |
Supported backends:
postgresql- PostgreSQL with SAVEPOINT support (recommended)sqlite- SQLite with limited checkpoint supportmysql- MySQL with SAVEPOINT support
Connection URL formats:
Bash
# PostgreSQL
postgresql://user:password@host:5432/database
postgresql://user:password@host:5432/database?sslmode=require
# SQLite
sqlite:///path/to/database.db
sqlite:///:memory:
# MySQL
mysql://user:password@host:3306/database
Infrastructure Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
docker_compose_file |
string | "docker-compose.qa.yml" |
VENOMQA_DOCKER_COMPOSE_FILE |
Docker Compose file path |
Execution Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
parallel_paths |
integer | 1 |
VENOMQA_PARALLEL_PATHS |
Max concurrent paths |
fail_fast |
boolean | false |
VENOMQA_FAIL_FAST |
Stop on first failure |
Parallel Execution
Using parallel_paths > 1 with database state management may cause isolation issues. Use sequential execution (parallel_paths=1) when state isolation is critical.
Logging Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
verbose |
boolean | false |
VENOMQA_VERBOSE |
Enable debug output |
capture_logs |
boolean | true |
VENOMQA_CAPTURE_LOGS |
Capture infra logs |
log_lines |
integer | 50 |
VENOMQA_LOG_LINES |
Log lines to capture |
Reporting Configuration¶
| Option | Type | Default | Environment Variable | Description |
|---|---|---|---|---|
report_dir |
string | "reports" |
VENOMQA_REPORT_DIR |
Report output directory |
report_formats |
list | ["markdown"] |
VENOMQA_REPORT_FORMATS |
Formats to generate |
Available formats:
markdown- Human-readable Markdownjson- Structured JSONjunit- JUnit XML for CI/CDhtml- Standalone HTML reportsarif- SARIF for security tools
Environment Variables¶
All configuration options can be overridden with environment variables prefixed with VENOMQA_:
Bash
# API
export VENOMQA_BASE_URL="http://api.example.com"
export VENOMQA_TIMEOUT=60
export VENOMQA_RETRY_COUNT=5
# Database
export VENOMQA_DB_URL="postgresql://user:pass@host:5432/db"
export VENOMQA_DB_BACKEND="postgresql"
# Execution
export VENOMQA_PARALLEL_PATHS=4
export VENOMQA_FAIL_FAST=true
export VENOMQA_VERBOSE=true
# Reporting
export VENOMQA_REPORT_DIR="/tmp/reports"
export VENOMQA_REPORT_FORMATS="markdown,junit"
Type conversion:
| YAML Type | Environment Variable |
|---|---|
| string | As-is |
| integer | Parsed as int |
| float | Parsed as float |
| boolean | true/false, 1/0, yes/no |
| list | Comma-separated values |
Priority Order¶
Configuration is loaded in this order (later sources override earlier):
- Default values (lowest priority)
- Configuration file (
venomqa.yaml) - Environment variables (
VENOMQA_*) - CLI arguments (highest priority)
Multiple Environments¶
Using Different Config Files¶
Bash
# Development
venomqa run -c venomqa.dev.yaml
# Staging
venomqa run -c venomqa.staging.yaml
# Production (read-only tests)
venomqa run -c venomqa.prod.yaml
Example: Development Config¶
YAML
# venomqa.dev.yaml
base_url: "http://localhost:8000"
db_url: "postgresql://dev:dev@localhost:5432/dev_db"
verbose: true
timeout: 10
Example: Staging Config¶
YAML
# venomqa.staging.yaml
base_url: "https://api.staging.example.com"
db_url: "postgresql://qa:secret@staging-db:5432/qa_test"
verbose: false
timeout: 60
Example: CI/CD Config¶
YAML
# venomqa.ci.yaml
base_url: "${API_URL}" # Replaced by environment variable
timeout: 120
fail_fast: true
report_formats:
- junit
- html
Programmatic Configuration¶
QAConfig Class¶
Python
from venomqa import QAConfig
config = QAConfig(
base_url="http://localhost:8000",
db_url="postgresql://qa:secret@localhost:5432/qa_test",
db_backend="postgresql",
timeout=30,
retry_count=3,
retry_delay=1.0,
parallel_paths=2,
fail_fast=False,
verbose=True,
capture_logs=True,
log_lines=100,
report_dir="reports",
report_formats=["markdown", "junit"],
)
Loading from File¶
Python
from venomqa.config import load_config
# Load from default location
config = load_config()
# Load from specific path
config = load_config("path/to/config.yaml")
# Access values
print(config.base_url)
print(config.db_url)
print(config.timeout)
Creating Client from Config¶
Python
from venomqa import Client, QAConfig
config = load_config()
client = Client(
base_url=config.base_url,
timeout=config.timeout,
retry_count=config.retry_count,
retry_delay=config.retry_delay,
)
Validation¶
VenomQA validates configuration on load:
Python
from venomqa.config import load_config, ConfigValidationError
try:
config = load_config()
except ConfigValidationError as e:
print(f"Invalid configuration: {e}")
Validation rules:
base_urlmust be a valid URLtimeoutmust be positiveretry_countmust be non-negativedb_urlmust be valid connection string (if provided)report_formatsmust contain valid format names
Best Practices¶
1. Use Environment Variables for Secrets¶
YAML
# venomqa.yaml (safe to commit)
base_url: "http://localhost:8000"
db_backend: "postgresql"
# Set secrets via environment
# export VENOMQA_DB_URL="postgresql://..."
2. Different Timeouts for Different Environments¶
YAML
# Local development - fast feedback
timeout: 10
# CI/CD - allow for network latency
timeout: 60
# Production smoke tests - be patient
timeout: 120