Sourced from pytest's releases.
9.1.1
pytest 9.1.1 (2026-06-19)
Bug fixes
- #14220: Fixed a logic bug in
pytest.RaisesGroupwhich would might cause it to display incorrect "It matches FooError() which was paired with BarError" messages.- #14591: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect
@​pytest.mark.parametrize to fail with "duplicate parametrization of '<fixture name>'".- #14606: Fixed
list-itemtyping errors from mypy in@pytest.mark.parametrize <pytest.mark.parametrize ref>argvaluesparameter.- #14608: Fixed a regression in pytest 9.1.0 where
conftest.pyfiles located in<invocation dir>/test*were no longer loaded as initial conftests when invoked without arguments. This could cause certain hooks (likepytest_addoption) in these files to not fire.9.1.0
pytest 9.1.0 (2026-06-13)
Removals and backward incompatible breaking changes
#14533: When using
--doctest-modules, autouse fixtures withmodule,packageorsessionscope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.If this is undesirable, move the fixture definition to a
conftest.pyfile if possible.Technical explanation for those interested: When using --doctest-modules, pytest possibly collects Python modules twice, once as
pytest.Moduleand once as aDoctestModule(depending on the configuration). Due to improvements in pytest's fixture implementation, if e.g. theDoctestModulecollects a fixture, it is now visible to it only, and not to theModule. This means that both need to register the fixtures independently.Deprecations (removal in next major release)
#10819: Added a deprecation warning for class-scoped fixtures defined as instance methods (without
@classmethod). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use@classmethoddecorator instead -- byyastcher.See
10819and14011.#12882: Calling
request.getfixturevalue() <pytest.FixtureRequest.getfixturevalue>during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.See
dynamic-fixture-request-during-teardownfor details.#13409: Using non-
~collections.abc.Collectioniterables (such as generators, iterators, or custom iterable objects) for theargvaluesparameter in@pytest.mark.parametrize <pytest.mark.parametrize ref>andmetafunc.parametrize <pytest.Metafunc.parametrize>is now deprecated.These iterables get exhausted after the first iteration, leading to tests getting unexpectedly skipped in cases such as running
pytest.main()multiple times, using class-level parametrize decorators, or collecting tests multiple times.See
parametrize-iteratorsfor details and suggestions.#13946: The private
config.inicfgattribute is now deprecated. Useconfig.getini() <pytest.Config.getini>to access configuration values instead.See
config-inicfgfor more details.#14004: Passing
baseidto~pytest.FixtureDefornodeidstrings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.
... (truncated)
cf470ec
Prepare release version 9.1.1e0c8ce6
Merge pull request #14625
from pytest-dev/patchback/backports/9.1.x/a07c31a97...1b82d16
Merge pull request #14624
from pytest-dev/patchback/backports/9.1.x/b375b79ec...501c4bc
Merge pull request #14596
from bluetech/doc-classmethodb61f588
Merge pull request #14622
from chrisburr/fix-14608-initial-conftest-test-subdir9a567e0
[automated] Update plugin list (#14617)
(#14618)ef8b299
Merge pull request #14620
from pytest-dev/patchback/backports/9.1.x/680f9f3ed...66abd07
Merge pull request #14220
from bysiber/fix-stale-iexp-raisesgroup79fbf93
Merge pull request #14612
from pytest-dev/patchback/backports/9.1.x/974ed48b6...0d312eb
Merge pull request #14611
from bluetech/parametrize-argvalues-typing