Ruff pytest-fixture-finalizer-callback (PT021)

pytest-fixture-finalizer-callback в Ruff проверяет код на предупреждение PT021. Правило относится к группе flake8-pytest-style.

Почему это неправильно

Единый стиль pytest-тестов делает проверки короче, понятнее и устойчивее к ошибкам.

Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила pytest-fixture-finalizer-callback и пример ниже.

Пример ошибки

import pytest


@pytest.fixture()
def my_fixture(request):
    resource = acquire_resource()
    request.addfinalizer(resource.release)
    return resource

Как правильно

import pytest


@pytest.fixture()
def my_fixture():
    resource = acquire_resource()
    yield resource
    resource.release()


# "factory-as-fixture" pattern
@pytest.fixture()
def my_factory(request):
    def create_resource(arg):
        resource = acquire_resource(arg)
        request.addfinalizer(resource.release)
        return resource

    return create_resource

Автоисправление

Ruff не предлагает автоисправление для этого правила.