django工程黑盒测试使用coverage.py进行覆盖率统计

本文介绍了如何使用coverage.py在Django工程中进行黑盒测试的覆盖率统计。由于Django是一个Web框架,无法直接通过命令行方式运行,因此作者探讨了在代码中插入API和设置环境变量两种方法。在解决权限、覆盖问题和结果合并的过程中,对coverage.py的源码进行了适当修改,实现了在Django项目中统计代码覆盖率的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        公司有个用django框架制作的server,有一天领导跟我说,虽然我们做黑盒测试,但是我希望能统计代码覆盖度,这样能够完善我们的测试用例。于是就把这个任务交给我了。刚接到手我觉得这事很easy。django是python写的,python代码覆盖工具应该是很好找的,就百度了一下马上搜到了coverage.py这个东西。当然在实际使用中遇到了很多问题,折腾了好几天才完成。

        coverage.py的官网http://nedbatchelder.com/code/coverage/  我下载了最新的3.6版本,然后测试了一下,发现是可用的,且使用较为方便。

        按照官网或者网络搜索的说法,一般coverage有3种用法

        第一种使用命令行执行python脚本。比如有个脚本aaa.py,通常执行脚本方式为python aaa.py arg1 arg2,那么你只需使用coverage run aaa.py arg1 arg2执行完成后就能看到在当前目录下有个隐藏的.coverage文件,然后使用命令coverage report就能打印出来统计结果,想作成报表就输入coverage html就会有个文件夹生成然后打开里面的index.html就看到报表了,想要加入分支统计可以coverage run --branch aaa.py arg1 arg2。

        第二种是在代码中插入API

import coverage

cov = coverage.coverage()
cov.start()

# .. call your code ..

cov.stop()
cov.save()

cov.html_report(directory="abc")
        这种方式只需按照普通方式运行python脚本,执行完了就有哪个结果文件,如果加了最后那句html_report直接会生成abc这样一个文件夹就有报表了

        第三种方法就很暴力了,考虑到有些python程序不是import一个包然后调用里面的类或者方法,而是直接使用后台执行这个脚本,比如使用popen,那在脚本中执行的这个脚本就没统计到覆盖率了,于是这种用法就是解决这个问题。在环境变量里面加入COVERAGE_PROCESS_START=true,然后在sitecustomize.py这个文件最后加入这样一段</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值