[Python+unittest interface automated test combat (3)]-Get the latest test report and send email

1. Directory structure 

 

Read mailbox configuration reference: https://blog.csdn.net/kk_gods/article/details/109054888

Second, realize

1. Import related libraries


# coding=utf-8
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib,os

2. Get the test report to be sent

There may be multiple test reports in the test report folder, so only the latest test report is obtained here

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. Send email

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. Obtain the sending email, receiving email, and CC email address (refer to https://blog.csdn.net/kk_gods/article/details/109054888 ) and send

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. Test report mail effect

 

 

Guess you like

Origin blog.csdn.net/kk_gods/article/details/109182430