如何获取 Pytest 的代码覆盖率百分比值?

问题描述

我想将我的 pytest 测试的代码覆盖率百分比值发送到外部系统。 Xml 或 Html 报告对我来说不兼容,因为它们包含很多冗余信息。是否可以在某些 pytest 夹具中获取此值以在测试执行后将其发送到外部系统?

解决方法

您可以通过 cov 固定装置访问覆盖实例。但是,IIRC 您需要实际生成报告以获取百分比(或在自定义覆盖率插件中自己计算)。在下面的示例中,我使用会话范围的自动使用装置,因此每次测试运行时都会自动调用一次并将报告写入一次性文件对象:

import io
import pytest


@pytest.fixture(scope="session",autouse=True)
def upload_coverage(cov):
    yield
    cov.save()
    percentage = cov.report(file=io.StringIO())
    # percentage is a float which you can upload now