Skip to content

pytest-missing-fixture-name-underscore (PT004)

Derived from the flake8-pytest-style linter.

Warning: This rule has been removed and its documentation is only available for historical reasons.

Removal

This rule has been removed because marking fixtures that do not return a value with an underscore isn't a practice recommended by the pytest community.

What it does

Checks for pytest fixtures that do not return a value, but are not named with a leading underscore.

Why is this bad?

By convention, fixtures that don't return a value should be named with a leading underscore, while fixtures that do return a value should not.

This rule ignores abstract fixtures and generators.

Example

import pytest


@pytest.fixture()
def patch_something(mocker):
    mocker.patch("module.object")


@pytest.fixture()
def use_context():
    with create_context():
        yield

Use instead:

import pytest


@pytest.fixture()
def _patch_something(mocker):
    mocker.patch("module.object")


@pytest.fixture()
def _use_context():
    with create_context():
        yield

References