Skip to content

fix: default asyncio_default_fixture_loop_scope to "function"#1462

Open
sridhar-3009 wants to merge 3 commits into
pytest-dev:mainfrom
sridhar-3009:fix/default-fixture-loop-scope
Open

fix: default asyncio_default_fixture_loop_scope to "function"#1462
sridhar-3009 wants to merge 3 commits into
pytest-dev:mainfrom
sridhar-3009:fix/default-fixture-loop-scope

Conversation

@sridhar-3009
Copy link
Copy Markdown

Summary

Closes #924.

The asyncio_default_fixture_loop_scope ini option was left None by default, which triggered a PytestDeprecationWarning on every test run and caused async fixtures to fall back to the old fixture-caching scope behaviour.

This PR completes the deprecation by:

  1. Setting the default to "function" — the value the deprecation warning was telling users to set explicitly.
  2. Removing _DEFAULT_FIXTURE_LOOP_SCOPE_UNSET — the warning constant is now unreachable since the default is no longer falsy.
  3. Removing the if not default_fixture_loop_scope: warnings.warn(...) block in pytest_configure.

Before

# No ini setting needed, but you got a warning every run:
# PytestDeprecationWarning: The configuration option
#   "asyncio_default_fixture_loop_scope" is unset. ...

After

# No ini setting needed, no warning.
# Fixtures default to "function" scope.

Follow-up

Tests that explicitly set asyncio_default_fixture_loop_scope = function in pytester configs are now setting the default redundantly. Cleaning those up is a separate, mechanical follow-up.

The configuration option was previously left unset (None), causing
pytest-asyncio to emit a PytestDeprecationWarning on every run and
fall back to fixture-caching scope — the old deprecated behaviour.

Set the default to "function" as documented in the issue roadmap.
Remove the now-unreachable _DEFAULT_FIXTURE_LOOP_SCOPE_UNSET constant
and its associated warning emission in pytest_configure.

Tests that explicitly set `asyncio_default_fixture_loop_scope = function`
in pytester configs are still correct; removing those redundant settings
is left as a follow-up.

Closes pytest-dev#924
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.87%. Comparing base (6e14cd2) to head (9733864).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1462      +/-   ##
==========================================
+ Coverage   94.50%   94.87%   +0.36%     
==========================================
  Files           2        2              
  Lines         510      507       -3     
  Branches       62       61       -1     
==========================================
- Hits          482      481       -1     
+ Misses         22       21       -1     
+ Partials        6        5       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Finish deprecation of unset asyncio_default_fixture_loop_scope

2 participants