《一頭扎進》系列之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地址,點選在瀏覽器上訪問檢視測試報告
好了,今天的分享就到這裡吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡