欢迎访问宙启技术站
智能推送

pytest中的测试覆盖率统计与分析

发布时间:2024-01-05 17:42:44

在pytest中,我们可以通过使用coverage库来统计测试代码的覆盖率并进行分析。下面是一个使用例子,来演示如何在pytest中使用coverage进行测试覆盖率统计和分析。

首先,我们需要安装coverage库。可以使用以下命令安装:

pip install coverage

安装完毕后,我们可以在pytest的配置文件pytest.ini中加入以下内容,以启用覆盖率统计:

[pytest]
addopts = --cov-report term-missing --cov=<module_name>

上述配置中,--cov-report term-missing表示以文本形式输出缺失的代码行,--cov=<module_name>表示指定要统计覆盖率的代码模块。

接下来,我们创建一个简单的示例测试代码。假设我们有一个名为math.py的模块,其中包含了四个简单的数学函数:add、subtract、multiply和divide。我们的目标是编写测试代码来测试这些函数,并分析测试覆盖率。

首先,我们创建一个名为test_math.py的文件,用于编写测试代码:

import math

def test_add():
    assert math.add(2, 3) == 5

def test_subtract():
    assert math.subtract(5, 2) == 3

def test_multiply():
    assert math.multiply(3, 4) == 12

def test_divide():
    assert math.divide(10, 5) == 2

接下来,我们可以使用以下命令运行测试代码,并统计覆盖率信息:

pytest --cov-report term-missing --cov=math test_math.py

运行完毕后,我们可以看到类似下面的输出:

---------- coverage: platform darwin, python 3.9.1-final-0 -----------
Name        Stmts   Miss  Cover   Missing
-----------------------------------------
math.py         4      0   100%

输出中,Stmts表示代码总行数,Miss表示未被覆盖的代码行数,Cover表示覆盖率百分比,Missing表示未被覆盖的代码行。从输出可以看出,我们的测试代码覆盖了math.py模块的全部代码。

除了文本形式,我们还可以将覆盖率输出为HTML形式的报告。在pytest.ini文件中加入以下配置:

[pytest]
addopts = --cov-report html --cov=<module_name>

然后重新运行测试代码,并使用以下命令生成报告:

pytest test_math.py

生成的报告将保存在htmlcov文件夹中,我们可以通过浏览器打开index.html文件查看报告。

除此之外,coverage还提供了更丰富的功能,例如可以统计函数覆盖率、分支覆盖率等。通过配置pytest.ini文件中的--cov-config选项,我们可以指定一个.coveragerc文件,用于指定覆盖率统计的详细设置。

总结起来,通过使用coverage库和pytest的配置文件,我们可以方便地进行测试代码的覆盖率统计和分析。这样可以帮助我们了解测试代码的覆盖情况,提高测试代码的质量和覆盖率。