unittest詳解(四) 自動化測試用例實例


 uniittest不僅適用於單元測試,還可以使用unittest測試框架設計和開發自動化測試用例,並自動生成測試報告。

那么如何自動生成測試報告呢,需要使用到HTMLTestRunner模塊,這個模塊需要自行安裝,下載HTMLTestRunner.py文件放置python安裝目錄\Lib目錄下即可。

HTMLTestRunner模塊下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html。

 

接下來介紹一下unittest框架編寫自動化測試用例實例:

測試用例目錄如下:

 

 

case_1目錄中的py文件為單元測試用例,report1目錄下保存執行測試用例的結果報告。

task_all.py代碼如下:

#coding=utf-8
import unittest
import os,time
import HTMLTestRunner
from Atest.case_1 import task1,task2

#HTMLTestRunner模塊生成測試報告

#用例路徑
case_path=os.path.join(os.getcwd(),'case_1')

#報告存放路徑
report_path=os.path.join(os.getcwd(),'report_1')

#報告文件
now=time.strftime('%Y%m%d_%H:%M',time.localtime(time.time()))
filename=report_path+now+"_result.html"

fp=file(filename,'wb')

#方法一:使用defaultTestLoader加載case_1目錄下的所有測試用例,優點是加載方便,缺點是不能保證執行順序,並生成測試報告。
def all_case_a():
    discover=unittest.defaultTestLoader.discover(case_path,'task*.py',top_level_dir=None)
    return discover

if __name__=='__main__':
    # runner=unittest.TextTestRunner()
    # runner.run(all_case_a())
    runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'Atest測試用例執行',description=u'測試結果:')
    runner.run(all_case_a())
    fp.close()

#方法二:使用unittest.TestSuite加載測試用例,可自定義順序進行執行,並生成測試報告。
all_case_b=unittest.TestSuite()
list=[task1.task_a,task2.task_b]
for i in list:
    all_case_b.addTest(unittest.makeSuite(i))
if __name__=='__main__':
    runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'Atest測試用例執行',description=u'測試結果:')
    runner.run(all_case_b)
    fp.close()

 HtmlTestRunner無法生成報告的幾種情況:

1.若不是使用with做文件的上下文管理,記得要fp.close() 關閉打開的文件,才可以保存。

  fp = open(filename, 'wb') fp.close()

2.腳本中文字符要轉碼,如:u'中文'。小u 是避免中文引起的亂碼問題.

3.同一腳本文件中,鼠標光標放置test函數右擊,選擇“unittest test”執行則無法生成報告,因為Pycharm 自帶測試框架,需要點擊Edit Configurations→Python tests→選中要刪除的項目,這樣就不會自動執行unittest。然后光標放置 if __name__ == "__main__": 處,執行腳本,報告文件生成成功。

 


免責聲明!

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



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