Selenium:HTML測試報告


自動化測試過程中,獲得用例的執行結果后,需要有具象化、簡潔明了的測試結果,比如:用例執行時間、失敗用例數、失敗的原因等,這時候,就需要用到測試報告。

HTML測試報告是python語言自帶的單元測試框架,其擴展的HTMLTestRunner模塊可用於生成易於使用的HTML測試報告。

 

1、HTMLTestRunner下載

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

下載完成后,將下載的文件保存到C盤的\Python35\Lib目錄下(可以通過如下命令獲取python安裝目錄):

①進入cmd命令行

②輸入python

③輸入import sys

④輸入print(sys.path)

1 C:\Users\dell>python
2 Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
3 Type "help", "copyright", "credits" or "license" for more information.
4 >>> import sys
5 >>> print(sys.path)
6 ['', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\python35.zip', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\DLLs',
'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\lib', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35', 'C:\\Users\\dell\\
AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages
']

 

2、修改HTMLTestRunner文件

因為HTMLTestRunner是基於python2開發的,為了使其支持python3的環境,需要對其中的部分內容進行修改,修改后的內容如下:

 1 # HTMLTestRunner修改內容
 2 # 第94行
 3 import io
 4 # 第539行
 5 self.outputBuffer = io.StringIO()
 6 # 第631行
 7 print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
 8 # 第642行
 9 if not cls in rmap:
10 # 第766行
11 uo = o
12 # 第772行
13 ue = e

 

3、python文件執行與調用

①python文件的后綴為.py

②py文件既可以用來執行,就像一小段程序,也可以用來作為模塊被導入

③在python中導入模塊一般用import

代碼如下:

 1 from selenium import webdriver
 2 import unittest
 3 import time
 4 
 5 class MyTest(unittest.TestCase):
 6     def setUp(self):
 7         self.driver = webdriver,Chrome("F:\安裝工具\python\chromedriver.exe")
 8         self.driver.maximize_window()
 9         self.driver.implicitly.wait(10)
10         self.base_url = "http://www.baidu.com"
11 
12     def test_baidu(self):
13         driver = self.driver
14         driver.get(self.base_url + "/")
15         driver.find_element_by_id("kw").clear()
16         driver.find_element_by_id("kw").send_key("unittest")
17         driver.find_element_by_id("su").click()
18         time.sleep(2)
19         title = assertEqual(title,"unittest_百度搜索")
20 
21     def tearDown(self):
22         self.driver.quit()
23 
24 if __name__ == "__main__":
25     unittest.main()

 

4、HTMLTestRunner測試報告

以上面的test_baidu.py文件為例子,生成HTMLTestRunner測試報告,代碼如下:

 1 from selenium import webdriver
 2 import unittest
 3 from HTMLTestRunner import HTMLTestRunner
 4 
 5 class Baidu(unittest.TestCase):
 6     def setUp(self):
 7         self.driver = webdriver.Chrome("F:\安裝工具\python\chromedriver.exe")
 8         self.driver.implicitly_wait(10)
 9         self.base_url = "http://www.baidu.com/"
10 
11     def test_baidu_search(self):
12         driver = self.driver
13         driver.get(self.base_url)
14         driver.find_element_by_id("kw").send_key("HTMLTestRunner")
15         driver.find_element_by_id("su").click()
16 
17     def tearDown(self):
18         self.driver.quit()
19 
20 
21 if __name__ == "__main__":
22     baidu = Baidu("test_baidu_search")
23     testunit = unittest.TestSuite()
24     testunit.addTest(baidu)
25 
26     # 定義報告存放路徑
27     fp = open('./result.html', 'wb')
28     # 定義測試報告
29     runner = HTMLTestRunner(stream=fp,
30                         title='百度搜索測試報告',
31                         description= '用例執行情況:')
32     runner.run(testunit) #運行測試用例
33     fp.close() #關閉報告文件

代碼簡析:

①將HTMLTestRunner模塊用import導入

②通過open()方法以二進制寫模式打開當前目錄下的result.html,如果沒有則自動創建該文件

③調用HTMLTestRunner模塊下的HTMLTestRunner類,stream指定測試報告文件,title用於定義測試報告的標題,description用於定義測試報告的副標題

④通過HTMLTestRunner的run方法運行測試套件中所組裝的測試用例,最后通過close()關閉測試報告文件

 

以上為方便展示寫的例子,沒有太多實際意義,具體的還是需要在工作中使用實踐,關於unittest框架,后續會慢慢介紹。。。

 


免責聲明!

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



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