Fix contextvars not propagated from fixture to test #161
Well yes but actually no. It uses
I use it for a long time, and I got a case that will cause an exception.
var_db = ContextVar("db") @pytest.fixture @pytest.mark.asyncio def ensure_db(): db = ... token = var_db.set(db) try: yield finally: var_db.reset(token)
To avoid applying a new context instead of its original context object, the new solution needs to implement two extra functions.
There may are two ways to implement the first function. But I haven't enough time to do that.
This is a general problem not causing by this pull request but by the pytest-asyncio.
so, we can say this pull request resolves this #153?
What are the chances of this or #153 making it into the next release of pytest-asyncio?
No problem either way; if it's unlikely we'll publish a wheel of one of those branches temporarily to our internal pypi mirror, but if it's going to ship soon there's no need to spend that time. Just curious!
Hey guys, first off this is really excellent work in this PR! I noticed however that it's a bit out of date (2020). I was able to apply the same approach to the current branch on master with a little bit of finess (https://github.com/joeblackwaslike/pytest-asyncio/blob/master/pytest_asyncio/plugin.py).
Since this PR is kind of stale and contains some nontrivial conflicts preventing it from being approved/merged, I'm curious what would best help get the ball rolling? I don't believe I can push to the linw1995 repo but could maybe open my own PR from mine if that helps?
Let me know the best approach forward here. I'd personally love to see this merged because without it, it requires a lot of app/request context boilerplate to write integration tests for quart apps. For that reason we're currently vendoring this dependency, which is less than ideal.
It's really unfortunate that this PR has been lying around for such a long time, especially since it seems to be very well tested. It's very nice to hear about a specific use case (Quart tests), though.
At the moment, I'm not a huge supporter of the PR. Pytest-asyncio already tends to break in unexpected ways between releases. I fear that introducing functionality for transplanting the contextvars will open a can of worms. I'd much prefer an approach that reduces complexity, instead.
Python 3.11 introduces
@joeblackwaslike To get the ball rolling from my POV: We should look into how
I'm currently unaware of any attempts to backport asyncio functionality from newer versions of python to older versions so I'm really not sure where to start. If you do that would be useful information. Can you link me to the current proposal to use asyncio.Runner?
When I have some additional free time, I may try to backport the asyncio.Runner class to python 3.7 to see if it's even compatible with an older event loop.