繁体   English   中英

如何使用 pytest-asyncio 对 python 中的异步 function 进行单元测试?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM