![](/img/trans.png)
[英]asyncio.start_server not running inside pytest-asyncio test
[英]how to unit test an async function in python with pytest-asyncio?
我有一个异步function,向男高音API提出请求。function在另外True
8888年r.status_code == 200
;它不再有效。 我是 Python 的新手,所以我认为我没有正确使用 async/await 或请求库,但我不知道如何修复此错误。
这是 function:
async def get_gif():
api_key = os.getenv('TENOR_API_KEY')
client_key = os.getenv('TENOR_API_CLIENT')
r = requests.get(
f"https://tenor.googleapis.com/v2/search?q={get_gif_params()}&key={api_key}&client_key={client_key}&limit=1"
)
if r.status_code == 200:
gif = json.loads(r.content)[
'results'][0]["media_formats"]["mediumgif"]['url']
return gif
这将返回以“.gif”结尾的str
。
这是单元测试:
@pytest.mark.asyncio
async def test_gif():
gif = await get_gif()
assert type(gif) == str
我尝试使用pytest-asyncio
根据文档编写异步单元测试,并期望测试在断言返回值之前等待 function。
测试时,请求状态码为 400 ,返回为None
。 我不确定如何更改我的 function 或测试以便单元测试正确等待返回 str
原来我写我的function的意思是在测试function中调用get_gif()的时候没有传递环境变量,解决方法是重构get_gif(),让环境变量声明在function之外,然后传给function 作为参数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.