我是使用asyncio的新手,我有一个测试函数,我正在尝试使用pytest进行测试:这是我的测试结构:
MyClass()
async def myFunction(payload, headers):
session = aiohttp.ClientSession()
with session.post(url, json=payload, headers=headers) as resp:
response = await resp.json()
return response
然后我会做这样的测试:
def my_test():
loop = asyncio.get_event_loop()
reponse = loop.run_until_complete(MyClass().myFunction(url, headers))
loop.close()
当我运行测试时,我得到:
pytest runtimeerror线程“mainthread”中没有当前事件循环
我觉得我需要用一种不同的方式来处理线程,如何修复它呢
我见过一些相关的问题,但没有人使用pytests 最后,我使用的是Python 3.8.6
这应该起作用:
说明:
由于您正在从测试上下文调用asyncio.get_event_loop(),因此它返回一个无法使用loop.call_later()的循环,而aiohttp.ClientSession()在内部使用该循环,这就是您需要使用 loop=asyncio.new\u event\u loop() asyncio.set\u event\u循环(循环) 请参阅此处的更多信息: https://github.com/python/cpython/blob/6fcb6cfb139ade1aac6dbee0b18ca72b18cbe0d2/Lib/asyncio/events.py#L735
相关问题 更多 >
编程相关推荐