Coder Social home page Coder Social logo

documentation on how to force all tests in one session to use the same event loop appears to not force fixtures into the same event loop about pytest-asyncio HOT 4 OPEN

danking avatar danking commented on May 27, 2024 5
documentation on how to force all tests in one session to use the same event loop appears to not force fixtures into the same event loop

from pytest-asyncio.

Comments (4)

seifertm avatar seifertm commented on May 27, 2024 3

You'd better move to prior version. -> 0.21.1. I also wasted a day, figuring out why contextvar got spawend on another event_loop.

I agree. If pytest-asyncio v0.23 is currently causing issues for you, I suggest to continue using v0.21 until the issues are resolved.

@danking The v0.23 release allows tests to be run in different event loops. There's essentially one loop for each hierarchy level of the test suite (session, package, module, class, function). Unfortunately, pytest-asyncio also assumes that the scope of a fixture is coupled with the scope of the event loop. This means that a session-scoped fixture always runs in the session-scope loop. There's currently no way to have a session-scoped fixture running in the same loop as a function-scoped test. This is the core issue of #706.

@rumbarum I'm sorry that this caused you spending so much time on this issue.

from pytest-asyncio.

rumbarum avatar rumbarum commented on May 27, 2024 2

@seifertm
I appreciate your works.
And thanks for your words.

from pytest-asyncio.

danking avatar danking commented on May 27, 2024 1

This is definitely related to #706, #705, and #718, but I think my essential ask here is for documentation on how to ensure a particular test (or scope of tests, or group of tests) uses the same event loop as a particular fixture (or scope of fixtures, or group of fixtures).

The example I gave above may seem contrived, but it's essential to the correct functioning of aiohttp. The aiohttp.ClientSession saves a copy of the event loop at allocation time and assumes the same event loop is in use at HTTP request time.

If I have any non-default scoped fixture that creates a client session (possibly multiple layers down from the object I'm actually allocating), that fixture will yield a (nondeterministically) broken client session.

from pytest-asyncio.

rumbarum avatar rumbarum commented on May 27, 2024 1

#706 (comment)

You'd better move to prior version. -> 0.21.1.
I also wasted a day, figuring out why contextvar got spawend on another event_loop.

from pytest-asyncio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.