Releases: pytest-dev/pytest-asyncio
pytest-asyncio v1.4.0a1
1.4.0a1 - 2026-04-15
Added
-
Added the
pytest_asyncio_loop_factorieshook to parametrize asyncio tests with custom event loop factories.The hook returns a mapping of factory names to loop factories, and
pytest.mark.asyncio(loop_factories=[...])selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.Synchronous
@pytest_asyncio.fixturefunctions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., viaasyncio.run()orasyncio.set_event_loop(None)). (#1164)
Changed
- Improved the readability of the warning message that is displayed when
asyncio_default_fixture_loop_scopeis unset (#1298) - Only import
asyncio.AbstractEventLoopPolicyfor type checking to avoid raising
a DeprecationWarning. (#1394) - Updated minimum supported pytest version to v8.4.0. (#1397)
Notes for Downstream Packagers
- Added dependency on
sphinx-tabs >= 3.5to organize documentation examples into tabs. (#1395)
pytest-asyncio 1.4.0a0
1.4.0a0 - 2026-03-25
Added
-
Added the
pytest_asyncio_loop_factorieshook to parametrize asyncio tests with custom event loop factories.The hook now returns a mapping of factory names to loop factories, and
pytest.mark.asyncio(loop_factories=[...])can be used to select a subset of configured factories per test. (#1164)
Changed
- Improved the readability of the warning message that is displayed when
asyncio_default_fixture_loop_scopeis unset (#1298)
pytest-asyncio 1.3.0
1.3.0 - 2025-11-10
Removed
- Support for Python 3.9 (#1278)
Added
- Support for pytest 9 (#1279)
Notes for Downstream Packagers
- Tested Python versions include free threaded Python 3.14t (#1274)
- Tests are run in the same pytest process, instead of spawning a subprocess with
pytest.Pytester.runpytest_subprocess. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (#1275)
pytest-asyncio 1.2.0
1.2.0 - 2025-09-12
Added
--asyncio-debugCLI option andasyncio_debugconfiguration option to enable asyncio debug mode for the default event loop. (#980)- A
pytest.UsageErrorfor invalid configuration values ofasyncio_default_fixture_loop_scopeandasyncio_default_test_loop_scope. (#1189) - Compatibility with the Pyright type checker (#731)
Fixed
RuntimeError: There is no current event loop in thread 'MainThread'when any test unsets the event loop (such as when usingasyncio.runandasyncio.Runner). (#1177)- Deprecation warning when decorating an asynchronous fixture with
@pytest.fixturein [strict]{.title-ref} mode. The warning message now refers to the correct package. (#1198)
Notes for Downstream Packagers
- Bump the minimum required version of tox to v4.28. This change is only relevant if you use the
tox.inifile provided by pytest-asyncio to run tests. - Extend dependency on typing-extensions>=4.12 from Python<3.10 to Python<3.13.
pytest-asyncio 1.1.1
pytest-asyncio 1.1.0
Added
- Propagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (#127)
- Cancellation of tasks when the
loop_scopeends (#200) - Warning when the current event loop is closed by a test
Fixed
- Error about missing loop when calling functions requiring a loop in the
finallyclause of a task (#878) - An error that could cause duplicate warnings to be issued
Notes for Downstream Packagers
- Added runtime dependency on backports.asyncio.runner for use with Python 3.10 and older
pytest-asyncio 1.1.0a1
1.1.0a1 - 2025-06-30
Added
- Propagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (#127)
- Cancellation of tasks when the loop_scope ends (#200)
- Warning when the current event loop is closed by a test
Fixed
- Error about missing loop when calling functions requiring a loop in the finally clause of a task
(#878) - An error that could cause duplicate warnings to be issued
Notes for Downstream Packagers
- Added runtime dependency on backports.asyncio.runner for use with Python 3.10 and older
pytest-asyncio 1.0.0
1.0.0 - 2025-05-26
Removed
- The deprecated event_loop fixture.
(#1106)
Added
- Prelimiary support for Python 3.14
(#1025)
Changed
- Scoped event loops (e.g. module-scoped loops) are created once rather
than per scope (e.g. per module). This reduces the number of fixtures
and speeds up collection time, especially for large test suites.
(#1107) - The loop_scope argument to
pytest.mark.asynciono longer forces
that a pytest Collector exists at the level of the specified scope.
For example, a test function marked with
pytest.mark.asyncio(loop_scope="class")no longer requires a class
surrounding the test. This is consistent with the behavior of the
scope argument topytest_asyncio.fixture.
(#1112)
Fixed
- An error caused when using pytest's [--setup-plan]{.title-ref}
option.
(#630) - Unsuppressed import errors with pytest option
--doctest-ignore-import-errors
(#797) - A "fixture not found" error in connection with package-scoped loops
(#1052)
Notes for Downstream Packagers
- Removed a test that had an ordering dependency on other tests.
(#1114)
pytest-asyncio 1.0.0a1
1.0.0a1 - 2025-05-09
Removed
- The deprecated event_loop fixture.
(#1106)
Added
- Prelimiary support for Python 3.14
(#1025)
Changed
- Scoped event loops (e.g. module-scoped loops) are created once rather
than per scope (e.g. per module). This reduces the number of fixtures
and speeds up collection time, especially for large test suites.
(#1107) - The loop_scope argument to
pytest.mark.asynciono longer forces
that a pytest Collector exists at the level of the specified scope.
For example, a test function marked with
pytest.mark.asyncio(loop_scope="class")no longer requires a class
surrounding the test. This is consistent with the behavior of the
scope argument topytest_asyncio.fixture.
(#1112)