Start here. This is the direct spoken answer to practice first.
Overview
Aligns pytest-asyncio discovery, loop lifetime, and async fixture ownership without custom loop competition.
Pytest-asyncio runs async tests in managed event loops, with function scope giving the strongest isolation by default. Async fixtures also have a loop scope, and a long-lived fixture cannot safely depend on a loop that disappears sooner. I keep neighboring tests on a consistent loop scope and widen it only when an expensive async resource requires that lifetime. I let the plugin own loop creation instead of installing a competing custom loop fixture.