首页 > 解决方案 > 异步方法的 Python 覆盖率

问题描述

我使用 aiohttp、pytest 和 pytest-cov 来覆盖我的代码。我想获得更好的覆盖率<但现在我有点卡住了,因为事件简单代码没有显示 100% cov。例如这段代码:

@session_decorator()
async def healthcheck(session, request):
    await session.scalar("select pg_is_in_recovery();")
    return web.json_response({"status": "ok"})

在覆盖率报告中,它显示未覆盖与 return 的行。

我已阅读此链接Code coverage for async methods。但这是针对 C# 的,我无法理解:

如果您正在等待的操作在等待之前完成,则最常发生这种情况。

我运行测试的代码:

python3.9 -m pytest -vv --cov --cov-report xml --cov-report term-missing

我对上面代码的测试

async def test_healthz_page(test_client):
    response = await test_client.get("/healthz")
    assert response.status == HTTPStatus.OK

标签: pythonpython-3.xpytestpython-asyncioaiohttp

解决方案


推荐阅读