自動化發郵件功能也是自動化測試項目中的重要需求之一。在自動化腳本運行完成之后,郵箱就可以收到最新的測試報告結果,把這種主動的且不及時的查看變成被動且及時的查收,就方便多了。
首先我們需要一份漂亮且通俗易懂的測試報告來展示自動化測試成果, HTMLTestRunner 是 python 標準庫 unittest 單元測試框架的一個擴展,它生成易于使用的HTML測試報告。
下載地址: http://tungwaiyip.info/software/HTMLTestRunner.html
這個擴展非常簡單,只有一個.py文件,選中后直接下載到本地即可。安裝方法也很簡單,將其復制到python的安裝目錄下即可。
windows:將下載的文件保存在../Python35/Lib目錄下
Linux(ubuntu):以root身份將HTMLTestRunner.py復制到/usr/local/Python3.7/dist-packages/ 目錄下
修改HTMLTestRunner
#第 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, 'nTime Elapsed: %s' % (self.stopTime-self.startTime))#第 642 行if not rmap.has_key(cls):修改為:if not cls in rmap:#第 766 行uo=o.decode('latin-1')修改為:uo=o#第 772 行ue=e.decode('latin-1')修改為:ue=e生成HTML測試報告
from selenium import webdriverimport unittestfrom HTMLTestRunner import HTMLTestRunnerclass Baidu(unittest.TestCase): def setUp(self): self.driver=webdriver.Firefox() self.driver.implicitly_wait(10) self.base_url="https://www.baidu.com" def test_baidu_search(self): driver=self.driver driver.get(self.base_url) driver.find_element_by_id("kw").send_keys("HTMLTestRunner") driver.find_element_by_id("su").click() def tearDown(self): self.driver.quit()if __name__=="__main__": testunit=unittest.TestSuite() testunit.addTest(Baidu("test_baidu_search")) #定義報告存放路徑 fp=open('./result.html','wb') #定義測試報告 runner=HTMLTestRunner( stream=fp, title='百度搜索測試報告', description='用例執行情況:' ) runner.run(testunit) # 運行測試用例 fp.close() # 關閉報告文件代碼分析
首先,將HTMLTestRunner模塊用import導入進來
其次,通過open()方法以二進制寫模式打開當前目錄下的result.html,如果沒有,則自動創建該文件。
接著,調用HTMLTestRunner模塊下的HTMLTestRunner類。stream指定測試報告文件,title用于定義測試報告的標題,description用于定義測試報告的副標題。
最后,通過HTMLTestRunner的run()方法來運行測試套件中所組裝的測試用例。最后通過close()關閉測試報告文件。
新聞熱點
疑難解答