Unittest單元測試框架——BeautifulReport測試報告和Yagmail自動發送郵件


一、前言

之前在做appium自動化的時候,已經提到過unittest框架的基本概念、用例執行,以及BeautifulReport測試報告的簡單使用了(地址:https://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="123@qq.com",password="12345",host='smtp.qq.com')

# 郵件正文
contents = ["這是測試郵件發送功能的郵件"]

# 發送郵件:如果想給多個用戶發,只需要把收件人放在一個list中即可;如果想發送帶附件的郵件,只需要指定本地附件的路徑即可,也可以通過list指定多個附件
yag.send(['1234@qq.com','455@qq.com'],'subject',contents,["E://report.html"])

說明,郵件發送需要准備以下幾個內容:

發送人的賬號(如xxxxxxxx@qq.com)、授權碼(如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="31696@qq.com", password="fuhhddjj", host='smtp.qq.com')
    subject = "自動化測試報告"
    contents = "自動化用例已執行完畢,詳細報告請查看附件"
    yag.send('13789@163.com',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)

 


免責聲明!

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



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