Skip to main content

Flake8 Linter

Flake8-Vedro is a specialized flake8 linter designed for the Vedro framework. It improves code quality in Vedro-based projects by enforcing rules that enhance maintainability and readability in test development.

Installation

To install flake8-vedro, run the following command:

$ pip install flake8-vedro

Usage

Consider an example project with this scenario:

# ./scenarios/get_book_details.py
import vedro
import httpx

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

def given_book_id(self):
self.book_id = 1234

def when_user_retrieves_book(self):
self.response = httpx.get(f"/api/books/{self.book_id}")

def then_it_should_return_book_details(self):
assert self.response.json() == {
"id": self.book_id,
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
}

To check for linting errors, use the command below:

$ flake8

Executing this command will display output highlighting linting errors:

./scenarios/get_book_details.py:4:1: E302 expected 2 blank lines, found 1
./scenarios/get_book_details.py:5:5: VDR105 subject in scenario should not be empty

In this output, E302 is a standard Flake8 spacing rule, while VDR105 is a custom rule for Vedro ensuring scenarios have defined subjects.

tip

Refer to the flake8-vedro repository for a complete list of rules

Configuration

Since flake8-vedro is a Flake8 plugin, its configuration aligns with the Flake8 configuration guidelines.

For example, to ignore a specific rule such as VDR105, execute the following command:

$ flake8 --extend-ignore VDR105

Alternatively, add the rule to setup.cfg:

[flake8]
extend-ignore = VDR105