Skip to main content

Selecting & Ignoring

What's inside
  • 🎯 Run only the scenarios you care about
  • 🧹 Gently ignore which aren’t relevant right now
  • 🧬 Target individual tests, even parameterized cases

Introduction

In day-to-day development, you often run just a subset of your test suite — a single scenario, a few files, or everything in just one directory. Vedro gives you multiple ways to precisely control what gets executed.

Selecting Scenarios

To run specific files or directories, pass them to vedro run:

$ vedro run <file_or_dir>

Examples:

# Run all scenarios in a directory
$ vedro run scenarios/login/

# Run two individual files
$ vedro run scenarios/register/register_new_user.py \
scenarios/login/login_as_registered_user.py

Ignoring Scenarios

Use the -i or --ignore flag to exclude specific files or directories:

$ vedro run -i <file_or_dir>  # or --ignore

Example:

$ vedro run -i scenarios/logout/

Ignored scenarios are completely excluded from the run: they won’t be executed, shown in output, or counted in summary statistics. To skip a scenario (but still include it in the report), see the Skipping Scenarios guide.

Combining Selection with Ignoring

You can combine file selection and ignore flags to run a group of scenarios while excluding specific ones:

$ vedro run scenarios/login/ \
-i scenarios/login/try_to_login_as_nonexisting_user.py

This runs everything in scenarios/login/, except the file you explicitly ignored.

tip

Use --dry-run to preview which scenarios would be executed, without actually running them. Helpful when fine-tuning test selection.

Selecting One and Only Scenario

To run just one scenario, add the @vedro.only decorator:

import vedro

@vedro.only
class Scenario(vedro.Scenario):
subject = "register new user"
...

Then run:

$ vedro run

To guard against accidentally committing @vedro.only, enable forbid_only in CI using the Skipper plugin configuration:

Show config...
import vedro.plugins.skipper
from os import environ as env

class Config(vedro.Config):

class Plugins(vedro.Config.Plugins):

class Skipper(vedro.plugins.skipper.Skipper):
enabled = True
forbid_only = env.get("CI", False)

This will raise an error if any scenario uses @only.

Selecting by Subject

To run scenarios by their subject line, use --subject followed by a string match:

$ vedro run --subject 'register new user'

All scenarios with a matching subject will be executed.

Selecting a Parameterized Case

The easiest way to run a specific parameterized scenario is through an IDE like PyCharm or VS Code, which let you run individual cases directly from the UI.

If you're using the terminal, you can target a specific instance by appending #<index> to the scenario class:

import vedro
from vedro import params

class Scenario(vedro.Scenario):
subject = "{subject}"

@params("get ok status", 200)
@params("get not found status", 404)
def __init__(self, subject, status):
self.subject = subject
self.status = status

...

Run the first case (200 OK):

$ vedro run scenarios/get_status.py::Scenario#1

Run the second (404 Not Found):

$ vedro run scenarios/get_status.py::Scenario#2

Indexing starts at 1, and follows the top-to-bottom order of @params declarations — the natural order they appear in your code.

The Big Picture

Every selection feature (whether it’s a path, subject, decorator, or parameter index) is just a filter.

Vedro starts with the full set of available scenarios and lets you narrow it down using rules:

  • vedro run <path> → filter out everything except what’s in the specified path
  • --ignore <path> → filter out only what’s in the specified path
  • --subject <intent> → filter out all scenarios that don’t match this subject
  • @vedro.only decorator → filter out everything except this scenario

Think of each tool as a way to define what to ignore, until only the scenarios you care about are left. Once you see it that way, combining filters becomes intuitive, predictable, and powerful.