Unittest單元測試框架——BeautifulReport測試報告和Yagmail自動發送郵件
- 2021 年 5 月 6 日
- 筆記
- python介面自動化
一、前言
之前在做appium自動化的時候,已經提到過unittest框架的基本概念、用例執行,以及BeautifulReport測試報告的簡單使用了(地址://www.cnblogs.com/Chilam007/p/12857102.html–強烈建議先看此文章哈,不然下面直接貼的程式碼估計會有點懵),這裡就不再贅述了,本文主要講下yagmail發送郵件功能,當前前面已經講了po模式,所以是直接基於po模式的程式碼框架講的,包括後面的功能演練也都是基於po模式。
二、Yagmail發送郵件
yagmail是python的一個第三方庫,yagmail庫極大地簡化了發送郵件的程式碼,通過pip命令安裝(pip install yagmail),發送郵件示例
import yagmail # 連接郵箱伺服器 yag = yagmail.SMTP(user="[email protected]",password="12345",host='smtp.qq.com') # 郵件正文 contents = ["這是測試郵件發送功能的郵件"] # 發送郵件:如果想給多個用戶發,只需要把收件人放在一個list中即可;如果想發送帶附件的郵件,只需要指定本地附件的路徑即可,也可以通過list指定多個附件 yag.send(['[email protected]','[email protected]'],'subject',contents,["E://report.html"])
說明,郵件發送需要準備以下幾個內容:
發送人的帳號(如[email protected])、授權碼(如yyyyyyyyyy),伺服器host(如qq郵箱的smtp.qq.com)
收件人帳號
郵件標題(可不要)
郵件內容(可不要)
郵件附件(可不要,提供附件的路徑即可)
註:
1. 發送人的授權碼如何獲取?以QQ郵件為例(其他郵箱類似)
【qq郵箱——設置——賬戶——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務——IMAP/SMTP服務——開啟】
2. 公共郵箱:添加埠號與smtp的屬性即可(詳細請百度解決)
三、自動發送郵件功能集成自動化測試
上面說明了如何發送郵件,現在演練下如何將自動化測試生成的報告發送郵件,因為是基於前面講的po模式程式碼框架,所以這裡只講執行文件。
整個程式的執行過程可以分為兩部分:
1、定義測試報告文件,並賦值給變數html_report,通過BeautifulReport.report運行測試用例
2、調用send_mail()函數,並傳入html_report文件,在send_mail函數中,將測試報告作為郵件的附件發送到指定郵件
項目目錄
excute_cases.py
import unittest from BeautifulReport import BeautifulReport import datetime import yagmail # 把測試報告作為附件發送到指定郵箱 def send_mail(report): yag = yagmail.SMTP(user="[email protected]", password="fuhhddjj", host='smtp.qq.com') subject = "自動化測試報告" contents = "自動化用例已執行完畢,詳細報告請查看附件" yag.send('[email protected]',subject,contents,report) print("郵件已經發送成功!") if __name__ == '__main__': # 載入測試用例:指定E:\\08PyCharmProject\\Case1\\test_case目錄,「test*.py」匹配指定目錄下所有test開頭的.py文件 test_suite = unittest.defaultTestLoader.discover('E:\\UI test\\UnittestProject\\TestCases', pattern='test*.py') # 獲取當前時間,用於命名測試報告標題 now = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') # 將用例加到對象中 result = BeautifulReport(test_suite) # report方法實現了用例的執行、用例執行結束的結果統計、生成測試報告等操作 # :filename -> 測試報告名稱, 如果不指定默認文件名為report.html,description -> 測試報告用例名稱展示,report_dir-> 報告文件寫入路徑 result.report(filename='測試報告'+str(now), description='自動化測試', report_dir='E:\\UI test\\UnittestProject\\Report') html_report = './Report/測試報告'+str(now)+'.html' # 這個要注意要帶目錄路徑,如果直接附文件名,程式會找不到路徑 send_mail(html_report)