應用HTMLTestRunner整合測試報告
阿新 • • 發佈:2019-02-19
為了便於測試指令碼的維護,以及更多測試用例的管理,於是根據上次學習的HTMLTestRunner生成的測試報告,今天將對其進行整理。我們之前使用 TestSuite 只是在一個.py 檔案裡新增多個測試用例,那麼我們可以法把多個.py 檔案中的用例通過測試套件來組織。
測試套件結構如圖所示(在此,謝謝蟲師部落格的分享):
測試案例:
1.通過載入baidu模組,sogou模組以及PythonOrg模組
2.生成測試報告
為此,本文的實際用例如下:
3.根據需要,寫好測試指令碼。待完成後的測試指令碼分別另存為檔案
(TestBaidu.py,TestSogou.py,PythonOrg.py,All_HTMLTest.py)將其放在同一目錄下,然後執行All_HTMLTest.py的指令碼。
測試指令碼:
TestBaidu.py
測試搜尋和連結的控制元件。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest
import time
import re
import HTMLTestRunner
class TestBaidu(unittest.TestCase):
def setUp(self):
self.browser=webdriver.Chrome()
self.browser.implicitly_wait(30)
self.base_url="http://www.baidu.com"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search (self):
browser = self.browser
browser.get(self.base_url+'/')
browser.find_element_by_id("kw").clear()
browser.find_element_by_id("kw").send_keys("自動化測試")
browser.find_element_by_id("su").click()
time.sleep(2)
browser.find_element_by_id("su").submit()
time.sleep(3)
title=browser.title
print ("title is %s"%title)
time.sleep(5)
browser.close()
def test_link(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.find_element_by_link_text("貼吧").click()
time.sleep(5)
browser.close()
def tearDown(self):
self.browser.quit()
self.assertEqual([],self.verficationErrors)
if __name__=="__main__":
unittest.main()
TestSogou.py
測試搜尋,微信link以及設定連結的控制元件。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest
import time
import re
import HTMLTestRunner
class TestSogou(unittest.TestCase):
def setUp(self):
self.browser=webdriver.Chrome()
self.browser.implicitly_wait(30)
self.base_url="https://www.sogou.com"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
keyworld=browser.find_element_by_name("query")
keyworld.send_keys("Selenium Python")
browser.find_element_by_id("stb").click()
time.sleep(3)
browser.close()
def test_weixin(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
browser.find_element_by_link_text("微信").click()
time.sleep(2)
browser.close()
def test_config(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
browser.find_element_by_class_name.
("s_usersetting").click()
time.sleep(2)
browser.close()
def tearDown(self):
self.browser.quit()
self.assertEqual([],self.verficationErrors)
if __name__=="__main__":
unittest.main()
PythonOrg.py
測試搜尋和link控制元件。
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
#這樣可以根據需要自動載入時間
self.driver.implicitly_wait(30)
self.base_url="http://www.python.org"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search(self):
driver = self.driver
driver.get(self.base_url+"/")
self.assertIn("Python", driver.title)
elem = driver.find_element_by_name("q")
elem.send_keys("selenium")
elem.send_keys(Keys.RETURN)
#判斷title中是否有Welcome欄位
self.assertIn("Welcome", driver.title)
driver.close()
def test_download(self):
driver = self.driver
driver.get(self.base_url+"/")
self.assertIn("Python", driver.title
link=driver.find_element_by_link_text("Downloads")
link.click()
time.sleep(3)
driver.close()
def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verficationErrors)
if __name__ == "__main__":
unittest.main()
All_HTMLTest.py
此.py載入了TestBaidu.py,TestSogou.py,PythonOrg.py
#coding=utf-8
import unittest
#載入模組TestBaidu,TestSogou,PythonOrg
import TestSogou
import PythonOrg
import TestBaidu
import time
import HTMLTestRunner
testunit=unittest.TestSuite()
#將測試用例加入到測試容器中
testunit.addTest(unittest.makeSuite(TestSogou.TestSogou))
testunit.addTest(unittest.makeSuite(PythonOrg.PythonOrgSearch))
testunit.addTest(unittest.makeSuite(TestBaidu.TestBaidu))
#runner=unittest.TextTestRunner()
#runner.run(testunit)
#匯入當前時間,使用time模組的相關函式
now=time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())
#將測試結果寫入到result.html中
fp=open(now+"result.html",'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='Test Report',description=u'Result:')
runner.run(testunit)
fp.close()
F5執行,得到:
C:\Python34,得到:
開啟,此檔案得到:
對於錯誤的case,可以根據實際情況再做討論。
這樣一來,對於指令碼的維護便利了很多。只需要根據需要,改動相關模組的指令碼即可,或者根據需要新增需要的模組的指令碼,然後載入到All_HTMLTest.py中去。