Registry / testing / vedro
library1.15.1pypypi✓ verified 86d 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.93.13
musl
3.93.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.103.95 runs
installs and imports cleanly · install 0.0s · import 0.946s · 34.2MB
glibc
py 3.103.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
4 hits · last 30 days
node
4
Resources
vedro — pip install vedro · libregistry