1.ディレクトリ構造
メールボックス構成リファレンスを読む:https://blog.csdn.net/kk_gods/article/details/109054888
第二に、実現
1.関連ライブラリをインポートします
# coding=utf-8
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib,os
2.送信するテストレポートを取得します
テストレポートフォルダの下に複数のテストレポートがある場合があるため、ここでは最新のテストレポートのみを取得します。
def get_report_file(report_path):
"""
获取最新的测试报告
:param report_path:
:return:
"""
lists = os.listdir(report_path)
lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn)))
print(u'最新测试生成的报告: '+lists[-1])
# 找到最新生成的报告文件
report_file = os.path.join(report_path, lists[-1])
return report_file
3.メールを送信する
def send_mail(sender, psw, receiver, cc_receiver, smtpserver, report_file, port):
"""发送最新的测试报告内容"""
with open(report_file, "rb") as f:
mail_body = f.read()
# 定义邮件内容
msg = MIMEMultipart()
body = MIMEText(mail_body, _subtype='html', _charset='utf-8')
msg['Subject'] = u"接口自动化测试报告"
msg["from"] = sender
msg["to"] = ",".join(receiver)
msg["Cc"] = ",".join(cc_receiver)
msg.attach(body)
# 添加附件
att = MIMEText(open(report_file, "rb").read(), "base64", "utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename= "report.html"'
msg.attach(att)
smtp = smtplib.SMTP()
smtp.connect(smtpserver, port)
# 用户名密码
smtp.login(sender, psw)
smtp.sendmail(sender, receiver+cc_receiver, msg.as_string())
smtp.quit()
print('Test report email has send to {} !'.format(receiver))
4.送信メール、受信メール、およびCCメールアドレス(https://blog.csdn.net/kk_gods/article/details/109054888を参照)を取得して送信します。
def main():
# 获取最新的测试报告文件
report_path = os.path.join(cur_path, "report") # 测试报告文件夹
report_file = get_report_file(report_path) # 获取最新的测试报告
print('report_file: ', report_file)
# 邮箱配置
sender = readconfig.sender
psw = readconfig.psw
smtp_server = readconfig.smtp_server
port = readconfig.port
receivers = readconfig.receiver.split(',')
cc_receiver = readconfig.cc_receiver.split(',')
send_mail(sender, psw, receivers, cc_receiver, smtp_server, report_file, port) # 发送报告
if __name__ == "__main__":
main()
3.テストレポートのメール効果