Skip to content

pytest-incorrect-fixture-name-underscore (PT005)#

Derived from the flake8-pytest-style linter.

What it does#

Checks for pytest fixtures that return a value, but are 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.

Example#

import pytest


@pytest.fixture()
def _some_object():
    return SomeClass()


@pytest.fixture()
def _some_object_with_cleanup():
    obj = SomeClass()
    yield obj
    obj.cleanup()

Use instead:

import pytest


@pytest.fixture()
def some_object():
    return SomeClass()


@pytest.fixture()
def some_object_with_cleanup():
    obj = SomeClass()
    yield obj
    obj.cleanup()

References#