pytest中的测试覆盖率统计与分析
在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的配置文件,我们可以方便地进行测试代码的覆盖率统计和分析。这样可以帮助我们了解测试代码的覆盖情况,提高测试代码的质量和覆盖率。
