如何在Python中显示单元测试的正确覆盖率?

问题描述 投票:0回答:1

我无法显示单元测试的正确覆盖率信息。我创建了一个简单的 python 文件,如下所示: simple.py 包含以下内容:

def multiply(x, y):
    return x * y

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

def divide(x, y):
    return x / y

还有一个名为 test_simple.py 的单元测试,我将其存储在测试文件夹下:

import unittest

import simple as si


class TestSimple(unittest.TestCase):
    def test_multiply(self):
        self.assertEqual(si.multiply(3, 4), 12)

现在,我。使用 pytest 和coverage.py 运行我的覆盖率报告。我发表了以下声明:

pytest test_simple.py --cov=simple

并查看以下内容:

coverage report -m

Name        Stmts   Miss  Cover   Missing
---------------------------------------------------------------------------------------------------------------
simple.py       8      3    62%   5, 8, 11
---------------------------------------------------------------------------------------------------------------
TOTAL           8      3    62%

为什么会显示 62%?不应该是25%吗?看起来它从我的测试文件中添加了 100%,从我想查看覆盖了多少百分比的文件中添加了 25%,并取两者的平均值......这给了我 62.5%。无论如何我可以显示正确的信息,即 25% 吗?谢谢

python-3.x pytest python-unittest coverage.py
1个回答
0
投票

看一下 HTML 输出(

pytest --cov=simple --cov-report=html
,然后打开
htmlcov/index.html
),你可能会发现答案更明显:

指标根据代码中的语句数量报告覆盖范围。不是“功能数量”。您的代码中有 8 个语句:

  • 4
    def
    陈述
  • 4
    return
    陈述

您的测试将执行所有四个

def
语句,因为这就是当您
import
一个文件,然后执行一个
return
语句(对于
multiply
函数)时会发生的情况。

>>> 5/8
0.625
© www.soinside.com 2019 - 2024. All rights reserved.