1. 簡介
截止到上一篇文章為止,框架基本完全搭建完成。那么今天我們要做什么呢????聰明如你的小伙伴或者是童鞋一定已經猜到了,都測試完了,當然是要生成一份高端大氣上檔次的測試報告了。沒錯的,今天宏哥就帶領你們將這部分內容也集成到這個框架中。本文來介紹如何生成自動化測試報告,前面文章尾部提到了利用HTMLTestRunner.py來生成自動化測試報告。關於HTMLTestRunner不過多介紹,只需要知道是一個能生成一個HTML格式的網頁報告就可以,其他的如果你特別感興趣可以自己去搜索查詢資料。我們需要在宏哥前邊介紹的自動化框架里面繼承一個報告輸出,直接來看看效果。
2. 測試報告效果
2.1 測試報告文件
我們從下圖中,可以清楚地看到在test_report文件夾下生成的測試報告
2.2 瀏覽器預覽效果
因為生成的是.html文件,所以這里用瀏覽器打開我們看一下效果如下圖:
2.3 實現
這里我們報告輸出代碼寫到了,負責執行測試套件TestRunner.py這個文件。相關代碼如下:
TestRunner.py
2.3.1 代碼實現:
2.3.2 參考代碼:
# -*- coding:utf-8 -*- # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2019-12-25 @author: 北京-宏哥 QQ交流群:705269076 Project: 《一頭扎進》系列之Python+Selenium自動化測試框架實戰篇7 - 年底了還沒升職加薪,年終獎全靠它了!!! ''' # 3.導入模塊 from automation_framework_demo.testsuits import HTMLTestReportCN import os import unittest import time from automation_framework_demo.framework.SendEmail import SendMail # 設置報告文件保存路徑 report_path = os.path.dirname(os.path.abspath('.')) + '/test_report/' print('report_path'+ report_path) # 獲取系統當前時間 now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # 設置報告名稱格式 HtmlFile = report_path + now + "HTMLtemplate.html" #fp = file(HtmlFile, "wb") fp = open(HtmlFile, "wb") #用例路徑 case_path = os.path.join(os.getcwd(), '') print('case_path',case_path) # 構建suite # suite = unittest.TestLoader().discover(case_path, "test_baidu_search.py", top_level_dir=None) suite = unittest.TestLoader().discover(case_path, "baidu_search1.py", top_level_dir=None) if __name__ == '__main__': #初始化一個HTMLTestRunner實例對象,用來生成報告 runner = HTMLTestReportCN.HTMLTestRunner(stream=fp, title=u"Python+Selenium自動化測試框架實戰篇7項目演示測試報告", description=u"用例測試情況") #開始執行測試套件 runner.run(suite) # runner = unittest.TextTestRunner() # runner.run(suite) fp.close()
2.3.3 運行結果:
運行代碼后,控制台打印如下圖的結果
2.3.4 測試報告預覽
測試報告用瀏覽器打開截圖,在你項目文件路徑下,找到這個HTML的報告,用本地瀏覽器打開。
如何生成自動化測試報告就介紹到這里。
3. 測試報告模板插件
宏哥這里為了方便,直接將測試報告的模板插件,直接放在了testsuits的文件下,如圖:
如果有潔癖的小伙伴或者童鞋們,可以自己建一個文件夾專門來存儲這個模板插件也可以的,但是不要忘記了最重要的一條就是將其導入,否則可能會報找不到的錯誤哦!
4. 導入測試報告模板插件
如何導入?其實很簡單的,就像python導入其他模塊一樣。例如宏哥這里的導入方法如下:
宏哥總結如下:
from 文件夾路徑 import 插件名字.py
5. 執行所有測試用例
除了上一篇那種找到文件夾,執行所有測試用例,我們還有別的方法執行所有測試用例嗎?當然有,但是對測試用例的名字的命名有要求,其實也不是硬性要求,只不過是為了后邊我們的正則表達式好寫,這里命名就規范一些。
5.1 命名規則:
所有測試用例的名字都以test開頭,例如:test_login.py。
5.2 正則表達式:
正則表達式:test*.py
5.3 代碼實現:
5.4 參考代碼:
# 構建suite # suite = unittest.TestLoader().discover(case_path, "test_baidu_search.py", top_level_dir=None) suite = unittest.TestLoader().discover(case_path, "test*.py", top_level_dir=None)
6. 小結
好了,今天的分享就到這里吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!
哎呀!!!忘記了,最后祝大家聖誕節快樂。。Merry Christmas!!!
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡