-cov:代码覆盖率的守护者

最近狗哥发现不少小伙伴在问如何检查代码的测试覆盖率。今天就给大家介绍一个超级实用的工具:-cov。它能帮我们清晰地看到代码的哪些部分被测试覆盖到了html颜色代码,哪些还没有,就像一个尽职尽责的小管家!

安装和基本使用

我们需要安装-cov:

1pip install pytest-cov

假设我们有这样一个简单的计算器模块(calc.py):

 1def add(a, b)
2    return a + b
3
4def subtract(a, b)
5    return a - b
6
7def multiply(a, b)
8    return a * b
9
10def divide(a, b)
11    if b == 0
12        raise ValueError(“除数不能为0哦”)
13    return a / b

对应的测试文件(.py):

1from calc import add, subtract
2
3def test_add()
4    assert add(1, 2) 
== 3
5    assert add(-1, 1) == 0
6
7def test_subtract()
8    assert subtract(3, 1) 
== 2

运行覆盖率测试

要检查代码覆盖率,只需要在运行时加上--cov参数:

1pytest --cov=calc test_calc.py

运行后,狗哥发现终端输出了这样的结果:

1Name      Stmts   Miss  Cover
2-----------------------------
3calc.py       8      3    63%

小贴士 :这告诉我们calc.py文件中有8个语句,其中3个没有被测试覆盖到,总覆盖率是63%。

生成详细报告

想知道具体哪些代码没被测试到?加上--cov-=html参数就能生成一个漂亮的HTML报告:

1pytest --cov=calc --cov-report=html test_calc.py

在生成的目录下打开index.html,就能看到详细的覆盖率报告,每一行代码都会用不同的颜色标记:

提高覆盖率的小技巧

分支覆盖 :别忘了测试各种条件分支,比如我们的除法函数:

def ():

(6, 2) == 3

with .():

(1,0) # 测试除数为0的情况

边界值测试 :测试一些特殊的输入值:

def l():

(0html颜色代码, 100) == 0 # 0相乘

(-2, 3) == -6 # 负数相乘

注意事项 :

小伙伴们,今天的学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问狗哥哦。祝大家学习愉快,学习节节高!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注