Python代碼覆蓋性測試入門
覆蓋測試通過代碼分析工具和跟蹤鉤子來判斷哪些代碼可執行以及哪些代碼被執行了,是對單元測試的有效補充,可以用來判斷測試的有效性。
Python擴展庫coverage可以實現對Python代碼的覆蓋測試,使用pip工具安裝之後,可以使用命令「coverage run file.py」對Python程序file.py進行覆蓋測試,然後使用命令「coverage report」直接查看測試報告,或者使用命令「coverage html」生成HTML文件的測試報告,這些HTML文件自動保存在htmlcov文件夾中。可以使用命令「coverage help」查看coverage支持的所有命令。
想要一起學習python的可以加裙五五六九八二零四九,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下
例如,有下面的代碼用來判斷一個整數是否為素數:
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」查看更多選項。
想要一起學習python的可以加裙五五六九八二零四九,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下
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()
想要一起學習python的可以加裙五五六九八二零四九,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下
※Python基礎新手學習需要注意的技術問題總結
※缺少Python項目實踐經驗怎麼辦
※給想轉行學習Python的朋友提些建議及學習路線望少走點彎路
※基於Python+tkinter+pygame音樂播放器源碼
TAG:Python |