Python 接口測試之發送郵件封裝


  引言

  在做接口測試的時候,我們不僅需要將測試結果以報告的形式展示,還需要將測試結果以郵件的形式發送到需要知道的人手中。那么如何發送郵件呢?

  郵件發送方式

  測試結果以郵件形式發送的方式有兩種:

第一種:手動統計結果數據及報告,用郵件客戶端或web版形式發送,比如:用QQ郵箱,foxmail郵箱...

第二種:使用腳本發送,比如:利用python內置對SMTP協議的支持,發送郵件。

  介紹一下:

  1. SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件;
  2. Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件;
  3. Smtplib是關於 SMTP(簡單郵件傳輸協議)的操作模塊,在發送郵件的過程中,起到服務器之間互相通信的作用;
  4. Email是用來設置服務器之間通信的信息,包括信息頭、信息主體等等;
  5. 用腳本發郵件時,需要先打開自己郵箱的 SMTP 功能,各家郵箱的設置方法不同,可自行百度;

發郵件流程圖剖析:

 

 

  腳本實現發送郵件

  這里我只介紹python腳本發送郵件,具體參考下面代碼,關鍵部分已經注釋:

# -*- coding: utf-8 -*-
'''
@author: Leo

@software: pycharm

@file:  111.py

@time: 2020/4/26 0026 1:13

@Desc:

'''
__author__ = 'Leo'


# -*- coding: utf-8 -*-
'''
@author: Leo

@software: pycharm

@file:  send_email.py

@time: 2020/4/25 0025 22:02

@Desc:

'''
__author__ = 'Leo'
# 導入發送郵件模塊:smtplib
import smtplib
# 導入構造郵件模塊:MIMEText
from email.mime.text import MIMEText

class SendEmail(object):
    """
    發送郵件模塊
    """
    def __init__(self):
        """
        初始化郵件配置服務
        """
        self.send_user = '###'
        self.mail_host = 'smtp.163.com'
        self.password = '###'

    def send_mail(self,user_lists,subject,content):
        """
        執行發送郵件
        """
        user = "發件人名稱" + "<" + self.send_user + ">"
        message = MIMEText(content,_subtype="plain",_charset="utf8")
        message['Subject'] = subject
        message['From'] = user
        message['To'] = ";".join(user_lists)
        try:
            server = smtplib.SMTP()
            server.connect(self.mail_host)
            server.login(self.send_user,self.password)
            # as_string將MIMEText對象轉成str
            server.sendmail(user,user_lists,message.as_string())
            server.close()
            print("郵件發送成功".center(60,'='))

        except:
            print("郵件發送失敗".center(60,'='))
            raise
    def send_content(self,data):
        """
        發送郵件內容
        """
        pass_cases_nums = int(len(data['pass_cases']))
        print("用例執行成功數:%s"%pass_cases_nums)
        fail_cases_nums = int(len(data['fail_cases']))
        print("用例執行失敗數:%s"%fail_cases_nums)
        not_execute_nums = int(len(data['not_execute_cases']))
        print("用例未執行數:%s" % fail_cases_nums)
        execute_num = float(pass_cases_nums + fail_cases_nums)
        total_cases = float(pass_cases_nums + fail_cases_nums + not_execute_nums)
        pass_ratio = "%.2f%%" % (pass_cases_nums / total_cases * 100)
        fail_ratio = "%.2f%%" % (fail_cases_nums / total_cases * 100)

        user_lists = ['###']
        subject = "【接口自動化測試用例執行統計】"
        content = "一共 %f 個用例, 執行了 %f 個用例,未執行 %f 個用例;成功 %f 個,通過率為 %s;失敗 %f 個,失敗率為 %s" % (total_cases, execute_num, not_execute_nums, pass_cases_nums, pass_ratio, fail_cases_nums, fail_ratio)

        self.send_mail(user_lists, subject, content)



if __name__ == '__main__':
    sm = SendEmail()
    sm.send_content({'pass_cases':[1, 3, 5],'fail_cases':[2, 4, 6],'not_execute_cases':[1, 2, 3]})

  

 

運行程序:

 

結果:

 

 

  總結

  以上就是簡單的郵件發送配置,有興趣的可以深入研究一下。另外,對測試開發,自動化測試技術與思想感興趣的朋友,可以加入QQ測開交流群:696400122進行交流,互相學習與進步。不積跬步無以至千里!

 

 


免責聲明!

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



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