對於自動化來說,測試報告是必須的,在敏捷化的團隊中,團隊中的成員需要自動化這邊提供自動化的測試報告,來判斷系統的整體質量以及下一步的測試策略。單元測試庫生成測試輸出到控制台的窗口上,但是這樣的結果看起來比較費力,很顯然,控制台日志的輸出的信息並不是個好的注意,那么好的注意應該是生成html頁面的測試報告,這樣的報告看起來更加清晰,慶幸的是unittest的單元測試庫擴展的HTMLTestRunner.py,可以生成html的自動化報告。
一、HTMLTestRunner.py
首先,下載HTMLTestRuner.py文件。
源地址:http://tungwaiyip.info/software/HTMLTestRunner.html
這是針對Python2.7版本,那么對於Python3.x的使用,需要改動幾處。http://www.bubuko.com/infodetail-529431.html。
具體改動如下:
第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
第778行,將output = saxutils.escape(uo+ue),修改成output = saxutils.escape(str(uo)+str(ue)),
將上述幾處改動,保存成功后,再將HTMLTestRunner.py放到C:\Python34\Lib目錄中, 運行cmd,輸入python,導入import HTMLTestRunner,無任何的錯誤提示信息,就表示成功,見截圖:
HTMLTestRunner.py實現html的測試報告,具體見如下的測試實例代碼:
#coding:utf-8
fromselenium import webdriver
fromtime import sleep,time,ctime
import unittest
fromPage import *
import threading
import HTMLTestRunner
class DemoPage(unittest.TestCase,BasePage.Page):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
def testTitle(self,value='testData'):
self.assertTrue(self.driver.title in self.getXmlData(value) )
def testUrl(self):
print self.driver.current_url
def tearDown(self):
self.driver.close()
self.driver.quit()
if__name__=='__main__':
suite=unittest.makeSuite(DemoPage)
#定義自動化報告目錄
filename='D:\\git\\PyCharm\\SeleniumHq\\Test-report\\Report.html'
fp=file(filename,'wb')
runner=HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'自動化測試報告',
description=u'自動化測試報告'
)
runner.run(suite)
執行成功后,自動化的測試報告在D:\\git\\PyCharm\\SeleniumHq\\Test-report目錄下的Report.html,打開Report.html的文件,就可以看到如下的自動化測試報告的截圖了: