Skip to content

fix: default asyncio_default_fixture_loop_scope to "function"#1462

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

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.

@golikovichev
Copy link
Copy Markdown

Quick heads-up: there are two other open PRs against the same issue (#924):

This PR is closest in shape to #1381 (drop the warning block, set the default), and the diff overlaps almost entirely with the plugin.py change in #1444. To keep things tidy for the maintainers, would you be open to either:

  1. Closing this PR in favour of Set default asyncio fixture loop scope to function #1444 and dropping a review there (an "approves" or a concrete comment on the regression test would probably help that one land faster), or
  2. Rebasing here on top of Set default asyncio fixture loop scope to function #1444 once it merges, if there's something left to do.

If you spotted a behaviour gap that #1444 doesn't cover, that's worth flagging on the issue thread so all three PRs converge on the same target rather than triaging the same default change three times.

@sridhar-3009
Copy link
Copy Markdown
Author

Closing in favour of #1444 which is further along and has maintainer feedback applied. Will follow that PR instead.

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

3 participants