• python+selenium+unittest测试框架4-邮件发送最新测试报告


    邮件发送最新测试报告

    示例:

    复制代码
    import HTMLTestRunner
    import unittest
    import os
    import time
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    
    def allcase():
        '''加载测试用例'''
        discover = unittest.defaultTestLoader.discover(casepath,
                                                       pattern="case*.py",
                                                       top_level_dir=None)
        return discover
    
    def run_case():
        '''执行测试用例,生成测试报告'''
        now = time.strftime("%Y_%m_%d %H_%M_%S")
        htmlreportpath = os.path.join(reportpath, now+"result.html")
        fp = open(htmlreportpath, "wb")
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                               title=u"自动化测试报告",
                                               description=u"测试用例执行情况")
        # 调用allcase函数返回值
        runner.run(allcase())
        fp.close()
    
    def get_report_file(reportpath):
        '''获取最新的测试报告'''
        lists = os.listdir(reportpath)
        lists.sort(key=lambda fn: os.path.getmtime(os.path.join(reportpath, fn)))
        # 找到最新生成的报告文件
        reportfile = os.path.join(reportpath, lists[-1])
        return reportfile
    
    def send_mail(sender, psw, receiver, smtpserver,reportfile, port=465):
        '''发送最新的测试报告内容'''
        #打开测试报告
        with open(reportfile, "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"] = receiver
        msg.attach(body)
        # 添加附件
        att = MIMEText(open(reportfile, "rb").read(), "base64", "utf-8")
        att["Content-Type"] = "application/octet-stream"
        att["Content-Disposition"] = 'attachment; filename= "report.html"'
        msg.attach(att)
        try:
            smtp = smtplib.SMTP_SSL(smtpserver, port)
        except:
            smtp = smtplib.SMTP()
            smtp.connect(smtpserver,port)
        # 用户名密码
        smtp.login(sender, psw)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
    
    if __name__ == '__main__':
        casepath = os.path.join(os.getcwd(),"case") #测试用例存放路径
        reportpath = os.path.join(os.getcwd(),"report") #测试报告存放路径
        run_case() #执行测试用例
        reportfile = get_report_file(reportpath) 
        smtpserver = "smtp.qq.com"
        sender = "139271007@qq.com" # 自己的账号
        psw = "password" #自己的密码
        receiver = "386421542@qq.com" #对方的账号
        send_mail(sender, psw, receiver, smtpserver,reportfile)
    复制代码
  • 相关阅读:
    0034 CSS精灵技术:sprite(重点)
    0033 溢出的文字省略号显示:white-space、overflow、text-overflow
    0032 垂直对齐:vertical-align(图片、表单和文字对齐,去除图片底侧空白缝隙)
    0031 CSS用户界面样式:鼠标样式cursor、轮廓线 outline、防止拖拽文本域resize
    0030 元素的显示与隐藏:dispaly、visibility、overflow
    0029 css定位:相对、绝对、固定、绝对定位盒子居中、z-index、绝对定位改变display属性、案例
    0027 chrome调试工具
    0026 页面布局流程
    0025 CSS属性书写顺序
    0024 Photoshop 切图
  • 原文地址:https://www.cnblogs.com/txx403341512/p/9353841.html
Copyright © 2020-2023  润新知