python接口自動化(二十七)--html 測試報告——上(詳解)

簡介

  上一篇咱們批量執行完用例後,生成的測試報告是文本形式的,不夠直觀,並且報告通常都是發給leader的,因此最好是直觀一目瞭然,爲了更好的展現測試報告,最好是生成 HTML 格式的。unittest 裏面是不能生成 html 格式報告的,需html

要導入一個第三方的模塊:HTMLTestRunner。python

導入 HTMLTestRunner

1.、這 個 模 塊 下 載 不 能 通 過 pip 安裝了,只能下載後手動導入,下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html瀏覽器

二、Download 下 HTMLTestRunner.py 文件就是咱們須要下載的包。注意點擊後會進入其源碼,能夠經過另存爲將其下載下來或者直接Ctrl+A加Ctrl+C,Ctrl+V,推薦另存爲源碼分析

三、下載後手動拖到 python 安裝文件的 Lib 目錄下學習

demo 解析

一、下載 Download 下的第二個文件 test_HTMLTestRunner.py,這個就是官方給的一個測試demo 了,從這個文件能夠找到該模塊的用法。測試

二、找到下圖這段,就是官方給的一個 demo 了,test_main()裏上半部分就是加載測試 case,咱們不須要搞這麼複雜。ui

三、最核心的代碼是下面的紅色區域,這個就是本篇的重點啦。編碼

 

生成 html 報告

一、咱們只需把上面紅色區域代碼 copy 到上一篇的基礎上稍作修改就能夠了,這裏主要有三個參數: spa

  --stream:測試報告寫入文件的存儲區域命令行

  --title:測試報告的主題

  --description:測試報告的描述

二、report_path 是存放測試報告的地址

測試報告詳情

一、找到測試報告文件,用瀏覽器打開,點開 View 裏的 Detail 能夠查看詳情描述。

二、爲了生成帶中文描述的測試用例,能夠在 case 中添加註釋,如在 test_01 的腳本添加以下注釋:

三、從新運行後查看測試報告

 

參考代碼

 1 # coding=utf-8
 2 #1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行  3 
 4 #2.註釋:包括記錄建立時間,建立人,項目名稱。  5 '''  6 Created on 2019-4-29
 7 @author: 北京-宏哥  8 Project:學習和使用discover批量執行測試用例  9 ''' 10 #3.導入unittest模塊 11 import unittest 12 import os 13 #4.編寫測試用例和斷言 14 def all_case(): 15  # 待執行用例的目錄 16     #case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"
17     case_dir = os.path.join(os.getcwd(), "case") 18     testcase = unittest.TestSuite() 19     discover = unittest.defaultTestLoader.discover(case_dir, 20                                                    pattern="test*.py", 21                                                    top_level_dir=None) 22  # #discover方法篩選出用例,循環添加到測試套件中 23     # for test_suit in discover: 24     #     for test_case in test_suit: 25  # #添加用力到testcase 26  # testcase.addTests(test_case) 27  # print(testcase) 28 
29  testcase.addTests(discover) # 直接加載 discover 能夠兼容python2和3 30  print(testcase) 31     return testcase 32 if __name__ == "__main__": 33  # 返回實例 34     runner = unittest.TextTestRunner() 35  #導入第三方模塊HTMLTestRunner 36  import HTMLTestRunner 37  #保存生成報告的路徑 38     report_path =  "C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\result.html"
39     fp = open(report_path,'wb') 40     runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 41                                            title=u"這是個人自動化測試用例", 42                                            description=u"用例執行狀況"
43  ) 44  # run 全部用例 45  runner.run(all_case()) 46  #關閉文件,記住用open()打開文件後必定要記得關閉它,不然會佔用系統的可打開文件句柄數。 47     fp.close()

小結

一、fp.close()  #關閉文件。python會在一個文件不用後自動關閉文件,不過這一功能沒有保證,最好仍是養成本身關閉的習慣。  若是一個文件在關閉後還對其進行操做會產生ValueError

二、問題: 執行測試用例的過程當中,不會打印任何東西,致使上個廁所或次日回來時,根本不知道執行到哪了,或者執行多少測試用例了。

解決思路: 每次執行一個測試用例時,就打印該測試用例的名稱。

解決方案: 調用HTMLTestRunner時,定義 verbosity 爲大於1的整數,好比說 2:

runner=HTMLTestRunner.HTMLTestRunner(fp,title="xxxx",description="xxx",verbosity=2)

在控制檯console 就能夠看到每執行一條用例,就會有以下輸出:

三、HTMLTestRunner 腳本源碼分析與解釋

 1 class OutputRedirector(object)  2 # 將輸出進行重定向  3 
 4 class Template_mixin(object)  5 # 定義生成HTML結果文件所須要的模板。  6 # 若是咱們想改變HTML的格式等待,能夠在這裏進行改動  7 
 8 class _TestResult(TestResult)  9 # 定義繼承自 unittest.TestResult 的 類。 10 # 這裏重寫了 unittest.TestResult 的多個方法,好比 startTest(self, test) 等等 11 
12 class HTMLTestRunner(Template_mixin) 13 # 這裏能夠說是使用 HTMLTestRunner.py 的入口。定義了多個咱們能夠看到的方法,好比 run(self, test) 14 
15 class TestProgram(unittest.TestProgram) 16 # 這裏繼承自 unittest.TestProgram 類,重寫了 runTests 方法。 17 # 用於命令行執行測試

四、缺點:使用HTMLTestRunner的執行測試用例的過程當中,若是中間中斷執行,則已經執行完的用例結果也不會打印到html文件

原文出處:https://www.cnblogs.com/du-hong/p/10783105.html

相關文章
相關標籤/搜索