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


 
					 
					