1. 程式人生 > >unittest+coverage單元測試程式碼覆蓋操作例項

unittest+coverage單元測試程式碼覆蓋操作例項

基於上一篇文章,這篇文章是關於使用coverage來實現程式碼覆蓋的操作例項,原始碼在上一篇已經給出相應連結。

本篇文章字用來實現程式碼覆蓋的原始碼,整個專案的測試框架如下:


就是在原始碼的基礎上加了一個CodeCover.py檔案,執行該檔案會在目錄CoverageReport生成相應的覆蓋報告。如下是CodeCover.py的原始碼:

#coding=utf8
import os
import time

def findTestWithPath():
    current_dir=os.getcwd()
    folderName=os.listdir(current_dir)
    #print folderName
    #獲取到測試檔案所在目錄
    TestSuit=[suite for suite in folderName if   not suite.find("TestSuit")]
    #用來儲存測試檔案
    testfile=[]
    withPathFile=[]
    for suite in TestSuit:
            #獲取測試目錄下的所有測試檔案
            testfile=testfile+os.listdir(".\\"+suite)
            for withPath in testfile:
                withPath=current_dir+"\\"+suite+"\\"+withPath
                withPathFile.append(withPath)
    del testfile
    #把testfile中的py檔案挑選出來
    withPathFile=[name for name in withPathFile if  not "pyc" in name]
    #print testfile
    print withPathFile
    return withPathFile

def codeCoverage():
    now = time.strftime("%Y%m%d%H%M") 
    htmlReport=os.getcwd()+"\\"+"CoverageReport"
    htmlCmd="coverage html -d  " +  htmlReport +"\\"+now
    for pyfile in  findTestWithPath(): 
        runPyCmd="coverage run " + pyfile
        if os.path.exists(htmlReport) :            
            os.system(runPyCmd)
            os.system(htmlCmd)
        else:
            os.mkdir(htmlReport)
            os.system(runPyCmd)
            os.system(htmlCmd)
            

if __name__=="__main__":
    codeCoverage()

執行結果圖: