Skip to content

Commit 0bf17f1

Browse files
committed
Fix compatibility with pytest 8.1 (FixtureDef signature changed)
1 parent 7aef82f commit 0bf17f1

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/pytest_bdd/compat.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,27 @@
33
from collections.abc import Sequence
44
from importlib.metadata import version
55

6-
from _pytest.fixtures import FixtureDef, FixtureManager
6+
from _pytest.fixtures import FixtureDef as _FixtureDef
7+
from _pytest.fixtures import FixtureManager
78
from _pytest.nodes import Node
89
from packaging.version import parse as parse_version
910

1011
pytest_version = parse_version(version("pytest"))
1112

13+
__all__ = ["getfixturedefs", "FixtureDef"]
1214

1315
if pytest_version.release >= (8, 1):
1416

15-
def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef] | None:
17+
def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[_FixtureDef] | None:
1618
return fixturemanager.getfixturedefs(fixturename, node)
1719

20+
def FixtureDef(fixturemanager, **kwargs):
21+
kwargs.setdefault("config", fixturemanager.config)
22+
return _FixtureDef(**kwargs)
23+
1824
else:
1925

2026
def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef] | None:
2127
return fixturemanager.getfixturedefs(fixturename, node.nodeid)
28+
29+
FixtureDef = _FixtureDef

src/pytest_bdd/steps.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ def _(article):
4242
from typing import Any, Callable, Iterable, Literal, TypeVar
4343

4444
import pytest
45-
from _pytest.fixtures import FixtureDef, FixtureRequest
45+
from _pytest.fixtures import FixtureRequest
4646
from typing_extensions import ParamSpec
4747

48+
from . import compat
4849
from .parser import Step
4950
from .parsers import StepParser, get_parser
5051
from .types import GIVEN, THEN, WHEN
@@ -210,7 +211,7 @@ def inject_fixture(request: FixtureRequest, arg: str, value: Any) -> None:
210211
:param value: argument value
211212
"""
212213

213-
fd = FixtureDef(
214+
fd = compat.FixtureDef(
214215
fixturemanager=request._fixturemanager,
215216
baseid=None,
216217
argname=arg,
@@ -224,6 +225,7 @@ def inject_fixture(request: FixtureRequest, arg: str, value: Any) -> None:
224225
add_fixturename = arg not in request.fixturenames
225226

226227
def fin() -> None:
228+
# TODO: Still required?
227229
request._fixturemanager._arg2fixturedefs[arg].remove(fd)
228230

229231
if old_fd is not None:

0 commit comments

Comments
 (0)