Registry / testing / vedro
library1.15.1pypypi✓ verified 89d ago

Vedro is a pragmatic testing framework for Python, focusing on simplicity and readability. It supports BDD-style scenarios, parametrized tests, and rich plugins. Current version is 1.15.1, with a regular release cadence of minor versions every few months.

pip install vedro
INSTALL
IMPORT
SIG · VEDRO
V
vedro
testingpythonv1.15.1
Install
3.0s avg
Import
897ms
Disk
33MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v1.15.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.946s · 34.2MB
glibc
py 3.10–3.95 runs
installs and imports cleanly · install 3.0s · import 0.848s · 35MB
33MB installed
● package 33MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Scenario
✓ from vedro import Scenario
given, when, then
✓ from vedro import given, when, then
params
✓ from vedro import params

Minimal scenario example with parametrized tests.

from vedro import Scenario, given, when, then, params class LoginScenario(Scenario): subject = "user login" @params("valid_user", "password123") @params("invalid_user", "wrongpass") def __init__(self, username, password): self.username = username self.password = password def given_user_exists(self): self.user = {"username": self.username, "password": self.password} def when_user_logs_in(self): self.result = self.authenticate(self.user) def then_it_should_succeed_or_fail(self): expected = self.username == "valid_user" assert self.result == expected def authenticate(self, user): return user["username"] == "valid_user" # Run with: vedro run
vedro --version
Debug
Known issues
gotchaScenarios must be classes inheriting from Scenario and placed in files matching **/scenarios/**/*.py. Forgetting this pattern will cause tests not to be discovered.
fix
Place test files under a 'scenarios' directory in your project.
affects: >=1.0
breakingIn v1.10, the 'subject' attribute became mandatory for each Scenario. Omitting it now raises an error.
fix
Add subject = 'description' to every Scenario class.
affects: >=1.10
gotchaWhen using @params, the __init__ method must accept the same number of arguments as params (including self). Mismatch causes cryptic errors.
fix
Ensure __init__ parameters exactly match the @params decorator arguments.
affects: >=1.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'vedro'
Vedro is not installed or installed in a different environment.
fix
Run: pip install vedro --upgrade
TypeError: __init__() takes 1 positional argument but 2 were given
Mismatch between @params decorator arguments and __init__ parameters.
fix
Update __init__ to accept the same number of arguments as provided by @params (excluding self).
vedro.exceptions.ScenarioValidationError: Scenario '...' must have a non-empty 'subject'
Missing subject attribute in the Scenario class (required since v1.10).
fix
Add subject = 'Some description' to the Scenario class.
Upgrade
Version history
1.15.1latest on PyPI · released Oct 4, 2025
Audit
Dependencies
vedro-allure-reporteroptionalAllure reporting plugin
vedro-httpoptionalHTTP testing plugin
Agent activity
9 hits · last 30 days
node
8
Anthropic
1
Resources
vedro — pip install vedro · libregistry