覆盖率测试效果
通过单元测试覆盖率检查,可以有效发现有哪些代码没有被测试用例覆盖到。效果如下
安装coverage
pip install pytest-cov
代码示例
待测试类
cov/calculator
待测试类中定义有两个方法
add
和mod
class Calculator:
def add(self, x: int, y: int):
return x + y
def mod(self, x: int, y: int):
return x / y
- 测试类
cov/test_calculator.py
在测试类中,只测试了待测试类定义的两个方法中的一个方法add
import pytest
from cov.calculator import Calculator
class TestCalculator:
cal = Calculator()
@pytest.mark.parametrize("x,y,expected", [[1, 2, 3]])
def test_add_positive(self, x, y, expected):
assert self.cal.add(x, y) == expected
@pytest.mark.parametrize("x,y,expected", [[-1, -2, -3]])
def test_add_negative(self, x, y, expected):
assert self.cal.add(x, y) == expected
pytest运行用例时添加–cov参数统计测试覆盖率
控制台中输出覆盖率报告
pytest --cov
out:
collected 2 items
test_calculator.py .. [100%]
---------- coverage: platform win32, python 3.8.10-final-0 -----------
Name Stmts Miss Cover
----------------------------------------
__init__.py 0 0 100%
calculator.py 5 1 80%
test_calculator.py 10 0 100%
----------------------------------------
TOTAL 15 1 93%
将覆盖率报告生成html
pytest --cov --cov-report=html
在当前目录中生成覆盖率报告目录htmlcov
,打开目录下的index.html
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。