Schemathesis 4.0 is a major rewrite of the core engine, Python API, and pytest integration. This release includes extensive breaking changes - see the migration guide for upgrading from v3.x.
🏎️ Performance Improvements
- 3x faster test execution
- 15x lower memory usage
🚀 New Features
Configuration system:
Added schemathesis.toml
with operation-specific settings, environment variable substitution, and multi-project support:
headers = { Authorization = "Bearer ${API_TOKEN}" }
[[operations]]
include-name = "GET /users"
request-timeout = 5.0
generation.max-examples = 200
Improved testing:
- Enhanced stateful testing with better OpenAPI link handling
- New phase system for separate control over examples, fuzzing, stateful, and coverage testing
- Stabilized experimental features (new response checks, more configuration options)
Updated CLI:
- Completely new output style (progress bars, cleaner output)
- Cleaner option names (
--max-examples
,--mode
, etc.) - Unified reporting system (
--report junit,vcr,har
)
📄 Documentation
Complete documentation rewrite available at https://schemathesis.readthedocs.io/en/stable/ with new guides, tutorials, and API reference.
💥 Breaking Changes
This is a major release with extensive breaking changes affecting the Python API, CLI options, and supported versions:
- Minimum requirements: Python 3.9+, pytest 7.0+
- API reorganization: Most imports, method names, and signatures changed
- CLI changes: Many options renamed or removed, or replaced with config file
- Removed features: aiohttp integration, Schemathesis.io, various legacy options