Das Testen des Async-Kontextmanager-Fixtures in Pytest führt zu einem unerwarteten Async-Generatorobjekt

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Das Testen des Async-Kontextmanager-Fixtures in Pytest führt zu einem unerwarteten Async-Generatorobjekt

by Guest » 19 Jan 2025, 20:25

Dies hängt in gewisser Weise mit meinem tatsächlichen Code zusammen. Die in Pytest Fixture verwendete Async-Kontextmanagerklasse gibt ein Async-Generatorobjekt anstelle der erwarteten Kontextmanagerinstanz zurück. Benötigen Sie Hilfe bei der Lösung dieses Problems.
Dies ist mein Code

Code: Select all

 import asyncio

class MyAsyncContextManager:
async def __aenter__(self):
print("Entering async context")
return self

async def __aexit__(self, exc_type, exc, tb):
print("Exiting async context")

def add_numbers(self, a, b):
return a + b

@pytest.fixture
async def async_context_manager():
async with MyAsyncContextManager() as manager:
yield manager

@pytest.mark.asyncio
async def test_async_context_manager(async_context_manager):
async_context_manager.add_numbers(1, 2)
Das ist der Fehler, den ich erhalte

Code: Select all

> async_context_manager.add_numbers(1, 2)
AttributeError: 'async_generator' object has no attribute 'add_numbers'
Fixure gibt mir also grundsätzlich async_generator und nicht die Instanz von MyAsyncContextManager

Top