简介:
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
可以看到如下的执行情况,绿色代表运行,红色代表未被执行,自己检查下代码逻辑,可以得出该结果是正确的。