unittest詳解(七) 自動生成測試報告


用例執行完成后,執行結果默認是輸出在屏幕上,其實我們可以把結果輸出到一個文件中,形成測試報告。

unittest自帶的測試報告是文本形式的,如下代碼:

import unittest

if __name__ == "__main__":
    # 測試用例目錄
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加載測試用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 測試報告路徑
    report_path = r"D:\Git\Test_Framework\report\report.text"
    with open(report_path,"a") as report:
        runner = unittest.TextTestRunner(stream=report,verbosity=2)
        runner.run(discover)

生成的txt測試報告如下:

這種TXT文件測試報告不能直觀地展示用例執行情況,引入第三方模塊HTMLTestRunner,可以展示一份優美的html格式的測試報告。

下面我們就來介紹下HTMLTestRunner模塊

HTMLTestRunner模塊不能通過pip安裝,必須先下載下來下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html

直接右鍵另存為就行了,下載完成后放到python安裝目錄下的../Python36\Lib

因為HTMLTestRunner模塊是基於Python2開發的,目前停止更新了,在Python3上運行會報錯。為了使其支持Python3環境,需要對其中的部分內容進行修改:

第94行,將import StringIO修改成import io

第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

第631行,將print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))

第642行,將if not rmap.has_key(cls):修改成if notcls in rmap:

第766行,將uo = o.decode(‘latin-1‘)修改成uo = e

第775行,將ue = e.decode(‘latin-1‘)修改成ue = e

修改完成后保存。

現在我們就可以生成一份優美的測試報告了

代碼:

import unittest
from HTMLTestRunner import HTMLTestRunner

if __name__ == "__main__":
    # 測試用例目錄
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加載測試用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 測試報告路徑
    report_path = r"D:\Git\Test_Framework\report\report.html"
    with open(report_path,"wb") as report:
        runner = HTMLTestRunner(stream = report,
                                title = "測試報告",
                                description = "系統登錄測試用例執行")
        runner.run(discover)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM