【问题标题】:What is pytest result mean?pytest结果是什么意思?
【发布时间】:2019-03-22 05:03:39
【问题描述】:

我正在学习使用 Python 进行测试,现在我正在使用 pytest-cov。

我尝试运行这个命令:

pytest --cov=myProj tests/ --cov-report term-missing 

测试完成后,我得到了这样的报告:

       ----------- coverage: platform linux, python 3.6.7-final-0 -----------
Name                                                             Stmts   Miss  Cover   Missing
----------------------------------------------------------------------------------------------
myProject/__init__.py                                                0       0    100%
myProject/alert.py                                                  14      14      0%   1-21
myProject/api/__init__.py                                            1       0    100%
myProject/api/spaces/__init__.py                                     0       0    100%
myProject/api/spaces/admin.py                                      279     179     36%   154-223, 312-335, 351-398, 422-432, 505-515, 534-565, 591-697
myProject/api/spaces/global.py                                      89      66     26%   35-43, 47-69, 72-92, 96-124
myProject/api/spaces/inventory.py                                   79      79      0%   1-119
myProject/api/spaces/keyword.py                                    134     110     18%   33-42, 46-68, 72-93, 101-112, 116-134, 138-165, 168-190

我仍然对在documentation 中找不到的报告感到困惑的一些事情是: 什么是 Stmts、Miss、Cover和Missing,是指如果Cover上的结果> 不是 100% 这意味着我的代码仍然很糟糕还是什么......?

【问题讨论】:

    标签: python python-3.x unit-testing pytest pytest-cov


    【解决方案1】:

    Stmts 指代码中语句的数量。

    Miss指的是未运行的语句数。

    Cover 是测试覆盖率,或(Stmts - Miss) / 100。

    Missing 包含Miss 语句的行号。

    如果覆盖率不是 100%,这意味着你的代码中有些部分是你的测试没有覆盖的,例如:

    def f(a, b):
        if a > 0:
            return a
    
        elif a == 0:
            return 0
    
        else:
            return b
    
    def test_f():
        assert f(10, 10)
    

    上述测试只会进入a > 0 分支,因此测试覆盖率为 33%。

    高覆盖率并不总是好的(因为仅覆盖代码并不意味着所有案例都经过充分测试),但低覆盖率通常是不好的(因为这意味着您的测试甚至没有触及部分代码)。

    【讨论】:

      【解决方案2】:
      • Stmts - 表示特定文件中的代码总行数。
      • Miss - 单元测试未覆盖的总行数。
      • Cover - 单元测试覆盖的所有代码行的百分比。
      • 缺失 - 未涵盖的代码行。

      【讨论】:

      • 我仍然不了解 Stmts,因为在我的报告中,在我的真实项目中,我的文件中有 54 行(没有换行),并且我的测试文件中有 26 行(也没有换行符),但在我的报告中 Stmts 它显示 28.
      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 2010-09-05
      • 2013-09-13
      相关资源
      最近更新 更多