Comments (2)
Thanks for the investigation. This seems to be connected to #713 .
The pytest-asyncio currently creates "dynamic" fixtures by adding them to the Python object, for example a module. Once the module is collected by pytest, the fixture is evaluated as usual. This approach is internally used by pytest as well and leaves the complicated fixture evaluation to pytest rather than having to reproduce in pytest-asyncio.
Unfortunately, pytest-asyncio currently adds those fixtures as part of the pytest_collectstart
hook. When trying to add a fixture to a module, that module is imported and may raise errors like pytest._outcomes.Skip
or pytest.CollectError
. The pytest_collectstart
hook isn't supposed to handle those kinds of exceptions, so pytest-asyncio tries to do it. That effort seems to be unsuccessful so far.
Given that fixing one bug leads to another bug, I think pytest-asyncio should look for an entirely different place to add the fixtures rather than in pytest_collectstart. There are chances that, in the future, pytest will provide a way to add fixtures to nodes, but until then pytest-asyncio needs to find a better workaround.
from pytest-asyncio.
@collielimabean This should be resolve with pytest-asyncio v0.23.3
from pytest-asyncio.
Related Issues (20)
- Support for Pytest 8.0 HOT 14
- pytest-asyncio makes pytest collect modules not matching `python_files`, causing `ModuleNotFoundError` HOT 3
- Startup failure on Windows with Version 0.23.3 HOT 1
- 0.23.3 breaking ImportError exception HOT 1
- 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 HOT 4
- TypeError: __call__() got an unexpected keyword argument 'specname' in version 0.23 pytest-asyncio HOT 3
- Python 3.11: DeprecationWarning: There is no current event loop HOT 13
- Hypothesis integration raises internal error when collecting `RuleBasedStateMachine` HOT 2
- AsyncGenerator early exit doesn't raise CancelledError and doesn't run `finally` branch HOT 4
- RuntimeError: "Timeout context manager should be used inside a task" in aiohttp with version 0.23 pytest-asyncio HOT 1
- pytest 8.0.0 AttributeError: 'Package' object has no attribute 'obj' HOT 2
- AttributeError: '_UnixSelectorEventLoop' object has no attribute '_compute_internal_coro' HOT 1
- Drop support for pytest 7
- Factory fixtures are causing `'Coroutine' object is not callable` warning in UI, but tests still run HOT 3
- Configuration option for default loop scope
- Can't async mock a method in a context manager HOT 2
- Parametrizing `event_loop_policy` parametrizes all tests
- Not compatible with --doctest-modules --doctest-ignore-import-errors HOT 1
- How to use event_loop_policy without triggering warnings? HOT 1
- "The test […] is not an async function" when `asyncio` marker is added via `pytest_collection_modifyitems()` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pytest-asyncio.