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 = ['xxxx@xxxx.com', 'xxxx@qq.com', 'xxx@xxxxx.com'] # 發送給多個人 recipients = ['hgxxx@nnnx.cn'] #發送給一個人 self.take_messages() self.msg['from'] = 'hg@xxx.cn' # 發送郵件的人,這種是公司郵箱轉發 #self.msg['to'] = recipients # 收件人和發送人必須這里定義一下,執行才不會報錯。 toaddrs = recipients smtp = smtplib.SMTP() smtp.connect('smtp.mxhichina.com') smtp.ehlo() smtp.login('hg@xxx.cn', '*******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地址,點擊在瀏覽器上訪問查看測試報告
好了,今天的分享就到這里吧!!!謝謝各位的耐心閱讀。有問題加群交流討論!!!
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡