標籤:star pattern script 項目 test report amp local wait
當自動化測試完成後,我們需要一份漂亮且通俗易懂的測試報告來展示自動化測試成果,僅僅一個簡單的log檔案是不夠的
HTMLTestRunner是Python標準庫unittest單元測試架構的一個擴充,它產生便於使用的HTML測試報告,下載後,將其複製到Python的安裝目錄即可,
例如,Windows,放在...\python27\Lib目錄下
補充知識:
1、Python注釋
普通注釋用#表示
文本注釋,放在類或者方法下面:""" 注釋內容 """或者 ‘‘‘注釋內容 ‘‘‘
2、測試報告以測試時間來命名,防止報告被覆蓋
time.time():擷取目前時間戳
time.ctime():目前時間的字串形式
time.localtime():目前時間的struct_time形式
time.strftime():用來擷取目前時間,可以講師時間格式化為字串
下面是項目整合產生測試報告源碼:
test_case檔案下的兩個測試案例
test_baidu.py
# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.common.exceptions import NoAlertPresentExceptionimport unittest, time, reclass Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "https://www.baidu.com/" self.verificationErrors = [] self.accept_next_alert = True def test_baidu(self): u"""百度搜尋用例""" driver = self.driver driver.get(self.base_url + "/?tn=98012088_5_dg&ch=12") driver.find_element_by_id("kw").clear() driver.find_element_by_id("kw").send_keys("select") driver.find_element_by_id("su").click() time.sleep(3) def tearDown(self): self.driver.quit()if __name__ == "__main__": unittest.main()
test_firefox.py
# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.common.exceptions import NoAlertPresentExceptionimport unittest, time, reclass FireFox(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://start.firefoxchina.cn/" self.verificationErrors = [] self.accept_next_alert = True def test_firefox(self): u"""Firefox搜尋用例""" driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("search-key").clear() driver.find_element_by_id("search-key").send_keys("selenium webdriver") driver.find_element_by_id("search-submit").click() time.sleep(5) def tearDown(self): self.driver.quit()if __name__ == "__main__": unittest.main()
執行測試案例的run_test.py
#coding=utf-8import unittest, doctestimport HTMLTestRunnerimport time#相對路徑定義用例存放的路徑和報告存放路徑test_dir=‘./test_case‘test_dir1=‘./report‘
#尋找對應路徑下的測試案例放到discover中discover=unittest.defaultTestLoader.discover(test_dir,pattern=‘test*.py‘)#定義帶有當前測試時間的報告,防止前一次報告被覆蓋now=time.strftime("%Y-%m-%d %H_%M_%S")filename=test_dir1+ ‘/‘ +now+ ‘result.html‘#二進位開啟,準備寫入檔案fp = file(filename, ‘wb‘)#定義測試報告runner =HTMLTestRunner.HTMLTestRunner(stream=fp,title=u‘搜尋測試報告‘,description=u‘用例執行情況‘)runner.run(discover)
最後產生的產生的html測試報告如下:
selenium+Python(產生html測試報告)