《一頭扎進》系列之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 = ['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地址,點擊在瀏覽器上訪問查看測試報告

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

 

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

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

 


免責聲明!

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



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