用于从外部库覆盖代码的pytestcov选项

2024-05-20 14:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在尝试为python项目实现一个自动化测试工具。是否可以使用pytestcov模块从外部库收集代码覆盖率?据我所知,只有coverage模块会报告来自外部库的代码覆盖率

例如:

import random


def test_rand():
  assert random.randint(0,10) == 5

使用命令coverage run -m --pylib pytest file.py::test_rand,我们可以从外部库(例如,在我们的例子中是随机模块)获取代码覆盖率

是否可以使用pytest-cov来做同样的事情


Tags: 模块项目代码testimportpytestdef报告
1条回答
网友
1楼 · 发布于 2024-05-20 14:16:31

默认情况下,pytest cov将报告所有库的覆盖率,包括外部库

如果对代码运行pytest cov,它将产生许多覆盖行,包括pypytestimportlib等等

要限制覆盖范围,即只想随机检查覆盖范围,只需将模块名称传递给cov选项,例如pytest cov=random。然后,覆盖率报告只考虑已命名的模块。您还可以通过指定多个cov值来传递多个模块,例如pytest cov=random cov=pytest

下面是一个运行测试以仅针对random生成覆盖率的示例

$ pytest  cov=random
====== test session starts ======
platform linux   Python 3.6.12, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
plugins: cov-2.12.1
collected 1 item

test_something.py F
[100%]

=========== FAILURES ============
___________ test_rand ___________

    def test_rand():
      import random
    
>     assert random.randint(0,10) == 5
E     AssertionError: assert 0 == 5
E      +  where 0 = <bound method Random.randint of <random.Random object at ...>>(0, 10)

test_something.py:6: AssertionError

      coverage: platform linux, python 3.6.12-final-0      -
Name             Stmts   Miss  Cover
/.../random.py     350    334      
TOTAL              350    334     5%

相关问题 更多 >