200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Python代码覆盖性测试入门

Python代码覆盖性测试入门

时间:2024-08-28 10:09:58

相关推荐

Python代码覆盖性测试入门

覆盖测试通过代码分析工具和跟踪钩子来判断哪些代码可执行以及哪些代码被执行了,是对单元测试的有效补充,可以用来判断测试的有效性。

Python扩展库coverage可以实现对Python代码的覆盖测试,使用pip工具安装之后,可以使用命令“coverage run file.py”对Python程序file.py进行覆盖测试,然后使用命令“coverage report”直接查看测试报告,或者使用命令“coverage html”生成HTML文件的测试报告,这些HTML文件自动保存在htmlcov文件夹中。可以使用命令“coverage help”查看coverage支持的所有命令。

例如,有下面的代码用来判断一个整数是否为素数:

from random import randint

def isPrime(n):

for i in range(2, int(n**0.5)+1):

if n%i == 0:

return 'No'

else:

return 'Yes'

n = randint(3, 2000)

print(n, ':', isPrime(n))

把上面的代码保存为isPrime.py,然后在命令提示符环境中首先执行命令“coverage run isPrime.py”测试,再执行命令“coverage report”查看测试报告。-m选项用来显示没有被执行到的代码行号,可以使用命令“coverage report -h”查看更多选项。

C:\Python 3.5>coverage run isPrime.py

1862 : No

C:\Python 3.5>coverage report

Name Stmts Miss Cover

--------------------------------

isprime.py 8 1 88%

C:\Python 3.5>coverage report -m

Name Stmts Miss Cover Missing

------------------------------------------

isprime.py 8 1 88% 8

另外,扩展库coverage还提供了编程接口支持代码覆盖测试。例如,把上面的素数判断程序修改为下面的代码并执行,会自动生成测试报告。

import coverage

from random import randint

cov = coverage.Coverage()

cov.start()

def isPrime(n):

for i in range(2, int(n**0.5)+2):

if n%i == 0:

return 'No'

else:

return 'Yes'

n = randint(3, 2000)

print(n, ':', isPrime(n))

cov.stop()

cov.save()

cov.html_report()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。