python代码覆盖率(上)---- pytest-cov

简介:

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下。
代码关系如下。
python代码覆盖率(上)---- pytest-cov_第1张图片

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
python代码覆盖率(上)---- pytest-cov_第2张图片
可以看到如下的执行情况,绿色代表运行,红色代表未被执行,自己检查下代码逻辑,可以得出该结果是正确的。
python代码覆盖率(上)---- pytest-cov_第3张图片

你可能感兴趣的:(python测试开发)