gpt4 book ai didi

python - 多个异步单元测试失败,但一一运行会通过

转载 作者:行者123 更新时间:2023-12-04 15:06:11 30 4
gpt4 key购买 nike

我有两个单元测试,如果我一一运行它们,它们就会通过。如果我在类级别运行它们,一个通过,另一个在 response = await ac.post( 失败。带有错误消息:RuntimeError: Event loop is closed

@pytest.mark.asyncio
async def test_successful_register_saves_expiry_to_seven_days(self):
async with AsyncClient(app=app, base_url="http://127.0.0.1") as ac:
response = await ac.post(
"/register/",
headers={},
json={
"device_id": "u1",
"device_type": DeviceType.IPHONE.value,
},
)
query = device.select(whereclause=device.c.id == "u1")
d = await db.fetch_one(query)
assert d.expires_at == datetime.utcnow().replace(
second=0, microsecond=0
) + timedelta(days=7)

@pytest.mark.asyncio
async def test_successful_register_saves_device_type(self):
async with AsyncClient(app=app, base_url="http://127.0.0.1") as ac:
response = await ac.post(
"/register/",
headers={},
json={
"device_id": "u1",
"device_type": DeviceType.ANDROID.value,
},
)
query = device.select(whereclause=device.c.id == "u1")
d = await db.fetch_one(query)
assert d.type == DeviceType.ANDROID.value
我已经尝试了几个小时,请问我错过了什么?

最佳答案

我找到了解决办法。
创建一个名为 conftest.py 的文件下 tests并插入以下内容:

@pytest.yield_fixture(scope="session")
def event_loop(request):
"""Create an instance of the default event loop for each test case."""
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close()
这将在每次测试后正确结束循环并允许运行多个循环。

关于python - 多个异步单元测试失败,但一一运行会通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66054356/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com