1. 程式人生 > >《一頭扎進》系列之Python+Selenium框架實戰篇8 - 年底升職加薪,年終獎就差最後這一步你知道不???

《一頭扎進》系列之Python+Selenium框架實戰篇8 - 年底升職加薪,年終獎就差最後這一步你知道不???

1.簡介

  到上一篇為止,測試報告已經完美的生成,但是你此時不要沾沾自喜,因為還差點意思,你才能升職加薪、拿年終獎。差點啥了???聽巨集哥給你慢慢道來。那就是把你生成的高階大氣上檔次的測試報告給領導展示一番,吹噓一番。不把測試報告發出去好好地在領導面前表現一番,你留著生娃過年嗎?這馬上就新年了,你還真的留著它生娃啊???辛苦了這麼久升職加薪,拿年終獎就靠這一把了。今天這篇文章巨集哥就給小夥伴和童鞋們來答疑解惑了,當然了方式方法多種多樣的,你可以通過郵件、QQ、微信將測試報告附件手動寫郵件傳送給相關負責人。這裡巨集哥講解如何將測試報告自動傳送給相關的負責人。

2. 框架結構

  先一睹為快,看看巨集哥把郵件模組放在那裡了,巨集哥認為這個也是固定的只要封裝好,在需要用到的地方進行匯入和呼叫就可以了。因為巨集哥將它放在了framework資料夾下,如下圖所示:

3. 郵件模組封裝

  上邊都說了,我們需要封裝,因此這裡給小夥伴或童鞋們分享一下郵件模組的封裝,封裝將最新的測試報告發送給測試負責人或者是領導,讓他們看看你的成果,這個是你升職加薪,年終獎的砝碼。相關程式碼如下:

3.1 程式碼實現:

3.2 參考程式碼:

# -*- coding:utf-8 -*-

# 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-12-26
@author: 北京-巨集哥   QQ交流群:705269076
Project: 《一頭扎進》系列之Python+Selenium自動化測試框架實戰篇8 - 年底了還沒升職加薪,年終獎全靠它了!!!
'''
# 3.匯入模組

import os, sys
import smtplib
import time
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

#reportPath = os.path.join(os.getcwd(), 'test_report')  # 測試報告的路徑
reportPath = os.path.dirname(os.path.abspath('.')) + '/test_report/'
# reportPath = "E:\\untitled\\automation_framework_demo\\test_report"  # 測試報告的路徑

print("列印路徑:")

print(reportPath)


class SendMail(object):

    def get_report(self):  # 該函式的作用是為了在測試報告的路徑下找到最新的測試報告

        dirs = os.listdir(reportPath)
        dirs.sort()
        newreportname = dirs[-1]
        print('The new report name: {0}'.format(newreportname))
        return newreportname  # 返回的是測試報告的名字

    def take_messages(self):  # 該函式的目的是為了 準備傳送郵件的的訊息內容
        newreport = self.get_report()
        self.msg = MIMEMultipart()
        self.msg['Subject'] = 'BBA JIT自動化測試報告'  # 郵件的標題
        self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')

        with open(os.path.join(reportPath, newreport), 'rb') as f:
            mailbody = f.read()  # 讀取測試報告的內容
        html = MIMEText(mailbody, _subtype='html', _charset='utf-8')  # 將測試報告的內容放在 郵件的正文當中
        self.msg.attach(html)  # 將html附加在msg裡

        # html附件    下面是將測試報告放在附件中傳送
        att1 = MIMEText(mailbody, 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'

        att1["Content-Disposition"] = 'attachment; filename="TestReport.html"'  # 這裡的filename可以任意寫,寫什麼名字,附件的名字就是什麼
        self.msg.attach(att1)

    def send(self):

       # recipients = ['[email protected]', '[email protected]', '[email protected]']  # 傳送給多個人
        recipients = ['[email protected]'] #傳送給一個人
        self.take_messages()
        self.msg['from'] = '[email protected]'  # 傳送郵件的人,這種是公司郵箱轉發
        #self.msg['to'] = recipients  # 收件人和傳送人必須這裡定義一下,執行才不會報錯。
        toaddrs = recipients

        smtp = smtplib.SMTP()
        smtp.connect('smtp.mxhichina.com')
        smtp.ehlo()
        smtp.login('[email protected]', '*******xxxx')
        smtp.sendmail(self.msg['from'], toaddrs, self.msg.as_string())  # 傳送郵件
        smtp.close()
        print('sendmail success')


if __name__ == '__main__':
    sendMail = SendMail()
    sendMail.send()

3.3 執行結果:

執行程式碼後,控制檯列印如下圖的結果

3.4 驗證是否是最新測試報告

從3.3中控制檯執行結果巨集哥列印的結果看出最新的測試報告是:

The new report name: 2019-12-25-11_03_42HTMLtemplate.html

我們去儲存測試報告檔案的test_report資料夾看一下是不是這個:是不是最新的測試報告

 

綜上所述:從控制檯列印結果和測試報告資料夾的測試報告檔案比較,我們可以清楚地看出二者一致,證明達到了預期的結果。

4. 檢視收件箱

4.1 檢視收件箱

在郵件的收件箱中檢視到,我們剛剛傳送的郵件如下圖所示:

4.2 檢視郵件內容

點選檢視郵件內容如下圖所示:

4.3 檢視郵件附件

用瀏覽器開啟附件預覽檢視如下圖所示:

5. 小結

Q:最後說明一下,有的小夥伴或者童鞋們私下會問,那個測試報告能不能在郵件裡像在瀏覽器裡一樣可以點選?
A:不可以的生成的檔案是HTML檔案,郵件客戶端解析不了,可以通過附件用瀏覽器開啟檢視,可以發一個最新測試報告ur地址,點選在瀏覽器上訪問檢視測試報告

  好了,今天的分享就到這裡吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

別忘了點 推薦 留下您來過的痕跡