{"id":22532,"library":"vedro","title":"Vedro","description":"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.","status":"active","version":"1.15.1","language":"python","source_language":"en","source_url":"https://github.com/vedro-universe/vedro","tags":["testing","bdd","scenarios","pragmatic"],"install":[{"cmd":"pip install vedro","lang":"bash","label":"Standard install"}],"dependencies":[{"reason":"Allure reporting plugin","package":"vedro-allure-reporter","optional":true},{"reason":"HTTP testing plugin","package":"vedro-http","optional":true}],"imports":[{"note":"","wrong":null,"symbol":"Scenario","correct":"from vedro import Scenario"},{"note":"","wrong":null,"symbol":"given, when, then","correct":"from vedro import given, when, then"},{"note":"","wrong":null,"symbol":"params","correct":"from vedro import params"}],"quickstart":{"code":"from vedro import Scenario, given, when, then, params\n\nclass LoginScenario(Scenario):\n    subject = \"user login\"\n\n    @params(\"valid_user\", \"password123\")\n    @params(\"invalid_user\", \"wrongpass\")\n    def __init__(self, username, password):\n        self.username = username\n        self.password = password\n\n    def given_user_exists(self):\n        self.user = {\"username\": self.username, \"password\": self.password}\n\n    def when_user_logs_in(self):\n        self.result = self.authenticate(self.user)\n\n    def then_it_should_succeed_or_fail(self):\n        expected = self.username == \"valid_user\"\n        assert self.result == expected\n\n    def authenticate(self, user):\n        return user[\"username\"] == \"valid_user\"\n\n# Run with: vedro run\n","lang":"python","description":"Minimal scenario example with parametrized tests."},"warnings":[{"fix":"Place test files under a 'scenarios' directory in your project.","message":"Scenarios must be classes inheriting from Scenario and placed in files matching **/scenarios/**/*.py. Forgetting this pattern will cause tests not to be discovered.","severity":"gotcha","affected_versions":">=1.0"},{"fix":"Add subject = 'description' to every Scenario class.","message":"In v1.10, the 'subject' attribute became mandatory for each Scenario. Omitting it now raises an error.","severity":"breaking","affected_versions":">=1.10"},{"fix":"Ensure __init__ parameters exactly match the @params decorator arguments.","message":"When using @params, the __init__ method must accept the same number of arguments as params (including self). Mismatch causes cryptic errors.","severity":"gotcha","affected_versions":">=1.0"}],"env_vars":null,"search_vec":"'1.15.1':29 'bdd':18,42 'bdd-style':17 'cadenc':34 'current':26 'everi':38 'focus':10 'framework':7 'minor':36 'month':40 'parametr':21 'plugin':25 'pragmat':5,44 'python':9 'readabl':14 'regular':32 'releas':33 'rich':24 'scenario':20,43 'simplic':12 'style':19 'support':16 'test':6,22,41 'vedro':1,2 'version':27,37","created_at":"2026-04-27T17:05:40.549171+00:00","updated_at":"2026-04-27T17:05:40.549171+00:00","problems":[{"fix":"Run: pip install vedro --upgrade","cause":"Vedro is not installed or installed in a different environment.","error":"ModuleNotFoundError: No module named 'vedro'"},{"fix":"Update __init__ to accept the same number of arguments as provided by @params (excluding self).","cause":"Mismatch between @params decorator arguments and __init__ parameters.","error":" TypeError: __init__() takes 1 positional argument but 2 were given"},{"fix":"Add subject = 'Some description' to the Scenario class.","cause":"Missing subject attribute in the Scenario class (required since v1.10).","error":" vedro.exceptions.ScenarioValidationError: Scenario '...' must have a non-empty 'subject'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.15.1","cli_name":"vedro","cli_version":"Vedro 1.15.1","type":"library","homepage":"https://vedro.io","github":"https://github.com/vedro-universe/vedro","docs":"https://vedro.io/","changelog":null,"pypi":"https://pypi.org/project/vedro/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-28","install_tag":null}}