pytest结果是什么意思?

时间:2019-03-22 05:03:39

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

我正在学习有关使用 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 小姐封面缺少是,如果结果在封面上>不是100%表示我的代码仍然不正确还是什么?。

2 个答案:

答案 0 :(得分: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%。

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

答案 1 :(得分:1)

  • Stmts -表示您在特定文件中的总代码行。
  • 小姐-单元测试未涵盖的总行数。
  • 覆盖-单元测试覆盖的所有代码行的百分比。
  • 缺少-未覆盖的代码行。