pytest-cov 是pytest的一个插件,其本质也是引用 python coverage 库 用来统计代码覆盖率。以下这篇文章只供理解,真实项目的话,我们都是用api调用接口的,所以真实项目使用会更复杂一些,这个待下次说明。
另外说明:coverage 是在覆盖率是语句覆盖的一种,不能对你的逻辑做判读,真实意义的话,需要多结合项目本身,这个覆盖率数据没有很强大说服力,不要盲目追求。
一般来说:
路径覆盖率 > 判定覆盖 > 语句覆盖
pip install pytest-cover
安装完后有
py.test -h 可以看到多了以下的用法,说明安装成功:
coverage reporting with distributed testing support:
新建三个文件,cau.py 与test_conver.py 在同一个目录code下。run.py文件在上一级目录pp下。
代码关系如下。
1.新建函数文件cau.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def cau (type,n1, n2):
if type==1:
a=n1 + n2
elif type==2:
a = n1 - n2
else:
a=n1 * n2
return a
2.新建test_conver.py测试文件:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from code.cau import cau
class Test_cover:
def test_add(self):
a=cau(1,2,3)
assert a==3
3.新建执行脚本run.py
#!/usr/bin/env ```python
# -*- coding: utf-8 -*-
import pytest
if __name__=='__main__':
pytest.main(["--cov=./code/" ,"--cov-report=html","--cov-config=./code/.coveragerc"] ) # 执行某个目录下case
说明:–cov参数 后面接的是测试的目录 (经给测试,不能指定某个特定的文件。),程序代码跟测试脚本必须在同一个文件下。 --cov-report=html 生成报告 ,只需要python run.py 就可以运行
coveragerc 意思是跳过某些脚本的覆盖率测试。此处跳过test_cover.py文件跟init文件。
内容如下:
[run]
omit =
tests/*
*/__init__.py
*/test_cover.py
生成完后可以直接点击indexhtml
可以看到如下的执行情况,绿色代表运行,红色代表未被执行,自己检查下代码逻辑,可以得出该结果是正确的。