Python發(fā)送郵件封裝實現(xiàn)過程詳解
引言
在做接口測試的時候,我們不僅需要將測試結果以報告的形式展示,還需要將測試結果以郵件的形式發(fā)送到需要知道的人手中。那么如何發(fā)送郵件呢?
郵件發(fā)送方式
測試結果以郵件形式發(fā)送的方式有兩種:
第一種:手動統(tǒng)計結果數(shù)據(jù)及報告,用郵件客戶端或web版形式發(fā)送,比如:用QQ郵箱,foxmail郵箱...
第二種:使用腳本發(fā)送,比如:利用python內(nèi)置對SMTP協(xié)議的支持,發(fā)送郵件。
介紹一下:
SMTP是發(fā)送郵件的協(xié)議,Python內(nèi)置對SMTP的支持,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件;Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發(fā)送郵件;Smtplib是關于 SMTP(簡單郵件傳輸協(xié)議)的操作模塊,在發(fā)送郵件的過程中,起到服務器之間互相通信的作用;Email是用來設置服務器之間通信的信息,包括信息頭、信息主體等等;用腳本發(fā)郵件時,需要先打開自己郵箱的 SMTP 功能,各家郵箱的設置方法不同,可自行百度;
發(fā)郵件流程圖剖析:

腳本實現(xiàn)發(fā)送郵件
這里我只介紹python腳本發(fā)送郵件,具體參考下面代碼,關鍵部分已經(jīng)注釋:
# -*- 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'
# 導入發(fā)送郵件模塊:smtplib
import smtplib
# 導入構造郵件模塊:MIMEText
from email.mime.text import MIMEText
class SendEmail(object):
"""
發(fā)送郵件模塊
"""
def __init__(self):
"""
初始化郵件配置服務
"""
self.send_user = '###'
self.mail_host = 'smtp.163.com'
self.password = '###'
def send_mail(self,user_lists,subject,content):
"""
執(zhí)行發(fā)送郵件
"""
user = "發(fā)件人名稱" + "<" + 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對象轉(zhuǎn)成str
server.sendmail(user,user_lists,message.as_string())
server.close()
print("郵件發(fā)送成功".center(60,'='))
except:
print("郵件發(fā)送失敗".center(60,'='))
raise
def send_content(self,data):
"""
發(fā)送郵件內(nèi)容
"""
pass_cases_nums = int(len(data['pass_cases']))
print("用例執(zhí)行成功數(shù):%s"%pass_cases_nums)
fail_cases_nums = int(len(data['fail_cases']))
print("用例執(zhí)行失敗數(shù):%s"%fail_cases_nums)
not_execute_nums = int(len(data['not_execute_cases']))
print("用例未執(zhí)行數(shù):%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 = "【接口自動化測試用例執(zhí)行統(tǒng)計】"
content = "一共 %f 個用例, 執(zhí)行了 %f 個用例,未執(zhí)行 %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]})
運行程序:

結果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python利用keras接口實現(xiàn)深度神經(jīng)網(wǎng)絡回歸
這篇文章主要為大家詳細介紹了基于Python語言中TensorFlow的Keras接口,實現(xiàn)深度神經(jīng)網(wǎng)絡回歸的方法。文中的示例代碼講解詳細,感興趣的可以了解一下2023-02-02
使用Python在Excel中設置和自定義頁眉和頁腳的操作方法
本文介紹如何使用Python在Excel中設置和自定義頁眉和頁腳,內(nèi)容包括插入基礎頁眉和頁腳、在頁眉和頁腳中添加圖片、為奇偶頁設置不同的頁眉和頁腳,以及為第一頁設置不同的頁眉和頁腳,感興趣的小伙伴跟著小編一起來看看吧2025-02-02
Python3實現(xiàn)取圖片中特定的像素替換指定的顏色示例
這篇文章主要介紹了Python3實現(xiàn)取圖片中特定的像素替換指定的顏色,涉及Python3針對圖片文件的讀取、轉(zhuǎn)換、生成等相關操作技巧,需要的朋友可以參考下2019-01-01

