【Selenium + Python】自动化测试之发送邮件正文以及附件同时发送

废话不多说,直接上代码:

 

复制代码
import unittest
import time
import os
import smtplib
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from models import driver


def new_report(report_dir):
    '''
    :param report_dir:报告路径
    :return:返回最新的文件
    '''
    #获取路径下的文件
    lists = os.listdir(report_dir)
    #按照时间顺序排序
    lists.sort(key=lambda fn: os.path.getmtime(report_dir + fn))
    #获取最近时间的
    new_report = os.path.join(report_dir,lists[-1])
    return new_report



def send_mail(new_report,new_report_fail,now):
    '''
    :param new_report:获取最新的文件
    :param new_report_fail:获取最新的文件的路径
    :param now:当前生成报告的时间
    :return:
    '''

    senduser = 'xxx@126.com'
    sendpswd = 'xxx'
    receuser = 'xxx@xxx.com.cn'

    #获取报告文件:'related'43行
    f = open(new_report,'rb')
    body_main = f.read()

    msg = MIMEMultipart()
    # 邮件标题
    msg['Subject'] = Header('TCS系统自动化测试报告','utf-8')
    msg['From'] = senduser
    msg['To'] = receuser
    #邮件内容
    text = MIMEText(body_main,'html','utf-8')
    msg.attach(text)

    #发送附件
    att = MIMEApplication(open(new_report_fail, 'rb').read())
    # att = MIMEText(sendfile, 'base64', 'utf-8')
    att['Content-Type'] = 'application/octet-stream'
    att.add_header('Content-Disposition', 'attachment', filename=('utf-8', '',now + "_report.html"))
    msg.attach(att)

    smtp = smtplib.SMTP()
    smtp.connect('smtp.126.com')
    smtp.login(senduser,sendpswd)
    smtp.sendmail(senduser,receuser,msg.as_string())


if __name__ == '__main__':
    startime = time.strftime('%H:%M:%S')
    print("开始时间为:%s" % startime)
    #测试路径
    test_dir = './tcs/test_case'
    #报告路径
    report_dir = './tcs/report/'

    now = time.strftime('%Y-%m-%d_%H-%M-%S')
    # 创建完整报告文件
    new_report_fail = report_dir + now + '_result.html'
    fp = open(new_report_fail,'wb')

    runner = HTMLTestRunner(stream=fp,
                            title="大标题:测试报告",
                            description='执行测试用例如下:')
    # 查找测试文件
    discover = unittest.defaultTestLoader.discover(test_dir,pattern='*_sta.py')

    runner.run(discover)
    fp.close()

    #②搜索最新生成的文件
    new_report = new_report(report_dir)
    #③发送邮件
    send_mail(new_report,new_report_fail,now)

    #展示测试报告html
    driver = driver.browser()
    driver.get("F:/PyProject/project/tcs/report/"+ now +"_result.html")

    stoptime = time.strftime('%H:%M:%S')
    print("结束时间为:%s" %stoptime)
复制代码

 

posted @   Owen_ET  阅读(2977)  评论(4编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 模様 (TV size ver.) Ivy to Fraudulent Game
  3. 3 河口恭吾
  4. 4 愛してる 高鈴
  5. 5 一生所爱 卢冠廷,莫文蔚
  6. 6 世间美好与你环环相扣 柏松
  7. 7 理想三旬 陈鸿宇
  8. 8 不浪漫罪名 王杰
  9. 9 樱花树下 张敬轩
  10. 10 因为你在 达闻西乐队,福禄寿FloruitShow
  11. 11 悬溺 葛东琪
- 河口恭吾
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 河口京吾

作曲 : 河口京吾

僕が そばにいるよ

君を 笑わせるから

桜舞う季節かぞえ

君と 歩いていこう

僕が そばにいるよ

君を 笑わせるから

桜舞う季節かぞえ

君と 歩いていこう

まぶしい朝は 何故か切なくて

理由をさがすように 君を見つめていた

涙の夜は 月の光に 震えていたよ

二人で

僕が そばにいるよ

君を 笑わせるから

空のない街抜け出し

虹を 探しに行こう

いつも そばにいるよ

君を 笑わせるから

やわらかな風に吹かれ

君と 歩いていこう

君と 歩いていこう

君がいる

君がいる

いつも そばにいるよ

点击右上角即可分享
微信分享提示