引言
在做介面測試hmmhunzaen的時候,我們不僅需要將測試結果以報告的形式展示,還需要將測試結果以郵件的形式傳送到需要知道的人手中。那麼如何傳送郵件呢?
郵件傳送方式
測試結果以郵件形式傳送的方式有兩種:
第一種:手動統計結果資料及報告,用郵件客戶端或web版形式傳送,比如:用qq郵箱,foxmail郵箱...
第二種:使用指令碼傳送,比如:利用python內建對smtp協議的支援,傳送郵件。
介紹一下:
smtp是傳送郵件的協議,python內建對smtp的支援,可以傳送純文字郵件、html郵件以及帶附件的郵件;python對smtp支援有smtplib和email兩個模組,email負責構造郵件,smtplib負責傳送郵件;smtplib是關於 smtp(簡單郵件傳輸協議)的操作模組,在傳送郵件的過程中,起到伺服器之間互相通訊的作用;email是用來設定伺服器之間通訊的資訊,包括資訊頭、資訊主體等等;用指令碼發郵件時,需要先開啟自己郵箱的 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_lis程式設計客棧ts,subject,content):
"""執行傳送郵件
"""user = "發件人名稱" + "www.cppcns.comself.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()
執行程式:
結果:本文標題: python傳送郵件封裝實現過程詳解
本文位址:
python 實現傳送郵件
可採用email模組傳送電子郵件附件。傳送乙個未知mime型別的檔案附件其基本思路如下 1.構造mimemultipart物件做為根容器 2.構造mimetext物件做為郵件顯示內容並附加到根容器 3.構造mimebase物件做為檔案附件內容並附加到根容器 a.讀入檔案內容並格式化 b.設定附件頭 ...
python實現傳送郵件
有時我們需要程式在執行出現問題時傳送郵件通知我們,在這裡寫了乙個使用qq傳送的python指令碼,也是綜合了網上的資源 然而網上的案例好像都不能用 搞得,當然只要把主機埠啥的改一下就能使用其他郵箱了,如下 usr bin python coding utf 8 import smtplib from...
Python實現傳送郵件
coding utf 8 引入相關的模組 import smtplib from email.mime.text import mimetext from email.mime.image import mimeimage from email.header import header from e...