目前,我正在尝试为python项目实现一个自动化测试工具。可以使用pytest-cov模块从外部库中收集代码覆盖率吗?据我所知,只有coverage模块会报告来自外部库的代码覆盖率!
示例:
import random
def test_rand():
assert random.randint(0,10) == 5使用命令coverage run -m --pylib pytest file.py::test_rand,我们可以从外部库(例如,在我们的例子中是随机模块)获得代码覆盖率。
有没有可能用pytest-cov做同样的事情呢?
发布于 2021-07-06 07:10:02
默认情况下,pytest-cov将报告所有库的覆盖范围,包括外部库。
如果你对你的代码运行pytest --cov,它会产生很多代码行,包括py,pytest,importlib等等。
要限制覆盖率的范围,即您只想随机检查覆盖率,只需将模块名称传递给覆盖选项,例如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%https://stackoverflow.com/questions/68039957
复制相似问题