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
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.
[b]Dies ist mein Code[/b]
[code] 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)
[/code]
[b]Das ist der Fehler, den ich erhalte[/b]
[code]> async_context_manager.add_numbers(1, 2)
AttributeError: 'async_generator' object has no attribute 'add_numbers'
[/code]
Fixure gibt mir also grundsätzlich async_generator und nicht die Instanz von MyAsyncContextManager