python代码覆盖率(下)--- coverage.py api

系统 1528 0

前言

使用pytest-cov 无法统计用 api调用服务的测试脚本所覆盖率,但大部分的项目基本也是使用api调用。所以我们额外需要使用coverage.py api 来统计。
当你安装pytest-cov时,已经默认安装了coverage 这个库。

服务启动

要想扫描到代码,必须在服务启动的时候要插入coverage相关配置。
我这边是flask 启动的,所以在flask启动的代码上添加,如下:

            
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    cov 
              
                =
              
               Coverage
              
                (
              
              
                )
              
              
    cov
              
                .
              
              start
              
                (
              
              
                )
              
              
                # 开始检测代码
              
              
                print
              
              
                (
              
              
                "qidong"
              
              
                )
              
              
    app
              
                .
              
              run
              
                (
              
              debug
              
                =
              
              
                True
              
              
                ,
              
               host
              
                =
              
              
                '0.0.0.0'
              
              
                ,
              
              port
              
                =
              
              
                9098
              
              
                )
              
              
                #原本只有这一行
              
              
    cov
              
                .
              
              stop
              
                (
              
              
                )
              
              
                # 停止纪录
              
              
                print
              
              
                (
              
              
                "guanbi"
              
              
                )
              
              
    cov
              
                .
              
              save
              
                (
              
              
                )
              
              
                # 保存在 .coverage 中
              
              
                print
              
              
                (
              
              
                "save"
              
              
                )
              
              
    cov
              
                .
              
              html_report
              
                (
              
              
                )
              
              
                # 生成 HTML 报告
              
            
          

原本我们是python xx.py 这样启动,但现在不可以。
需要改成这样,source 表示目录,xx表示执行文件。

            
              	coverage run --source='/xxx/' xx.py    

            
          

启动运行图如下: python代码覆盖率(下)--- coverage.py api_第1张图片 然后调用你的自动化脚本(自动化脚本是直接调的该服务提供的api 。)
python代码覆盖率(下)--- coverage.py api_第2张图片
自动化如果正常运行,能看到运行的请求

以上说明你的脚本跟服务是没问题的

ctr-c停掉该脚本后,最后显示save,如果显示”Coverage.py warning: No data was collected. (no-data-collected)“ 说明的服务运行方式有问题,coverage 服务没有运行到你代码

报告生成

输入以下命令

            
              coverage report

            
          

python代码覆盖率(下)--- coverage.py api_第3张图片

最后一步最后输入

            
              coverage html

            
          

这样就可以省 html 文件了。

导出在window上看,具体点击某个文件,点击run,你可以看到绿色的就是运行的。但有问题是,你会发现有些代码应该是要被执行,但却没有被执行。所以coverage的数据准不准很难说。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论