zoukankan      html  css  js  c++  java
  • py37 unitest+html_sendmail

    架构

     1.testcase

    #coding:utf-8
    import unittest
    import os,time
    #import HTMLTestRunner3   #py3版本
    import HTMLTestRunnerNew  #报告样式美化
    
    
    #测试用例
    class Test(unittest.TestCase):
        """测试用例1"""
        def setUp(self):
            print("start")
    
        def tearDown(self):
            time.sleep(1)
            print("end")
    
        def test01(self):
            """用例描述1:登录xxx,账户xxx"""
            print("执行测试用例1")
    
        def test02(self):
            """用例描述2:访问百度"""
            print("执行测试用例2")
    
    if __name__=="__main__":
        #1直接执行
        #unittest.main()
        #2执行测试报告
        test=unittest.TestSuite()
        test.addTest(Test("test01"))
        test.addTest(Test("test02"))
        #添加时间
        now=time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        #报告路径
        report_path="F:\download\report\report_"+now+".html"
        fp=open(report_path,"wb")
        runner=HTMLTestRunnerNew.HTMLTestRunner(stream=fp,
                                               title="这是我的自动化测试用例",
                                               description="用例执行情况",
                                               verbosity = 2)   #verbosity = 2  执行一个用例打印一条信息
        runner.run(test)
        #关闭文件
        fp.close()

    2.执行

    #coding=utf-8
    
    import unittest
    import os
    import time
    #import HTMLTestRunner3  #老样式,发送邮件可以看到页面样式
    import HTMLTestRunnerNew  #美化样式,发送邮件看不到页面样式
    import sendemail_report as email  #导入邮件模块
    
    #测试用例
    def all_case():
        """所有用例"""
        #待执行用例的目录
        #case_dir=r"F:/download/
        case_dir=os.path.join(os.getcwd(),"case")
        testcase=unittest.TestSuite()
        discover=unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)
    
        testcase.addTests(discover)
        print(testcase)
        return testcase
    
    #查找new测试报告
    def new_report(test_report):
        lists=os.listdir(test_report)  #列出目录洗所有文件夹
        lists.sort(key=lambda  fn:os.path.getmtime(test_report+"\"+fn))  #按时间排序
        file_new=os.path.join(test_report,lists[-1])  #获取最新的
        print("最新的报告是:",file_new)
        return file_new
    
    
    if __name__=="__main__":
    
        #返回实例
        runner=unittest.TextTestRunner()
        #获取当前时间
        now=time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        #保存报告路径
        report_path="F:\download\report\report_"+now+".html"
        fp=open(report_path,"wb")
        runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp,
                                                title="这是我的自动化测试用例",
                                                description="用例执行情况",
                                                verbosity=2)
        #run 所有用例
        runner.run(all_case())
        #关闭文件
        fp.close()
    
        # 查找最新的测试报告,并发送邮件
        report_path="F:\download\report\"
        new_report=new_report(report_path)
        email.send_mail_html(new_report)
        #email.send_mail_file(new_report)  #带报告附件

    3.sendmail

    #coding=utf-8
    """
    Created on
    @author:
    Project:py37发送html邮件及附件
    """
    
    from email.header import Header
    from email.mime.text import MIMEText
    import smtplib
    
    from email.mime.multipart import MIMEMultipart
    from email.mime.base import MIMEBase
    from email.utils import parseaddr,formataddr
    from email import encoders
    
    import os
    import time
    
    #邮件配置参数
    From_addr = "xx@xx.com"
    Password = "xx"
    To_addr = "xx@xx.com" 
    Smtp_server = "smtp.exmail.qq.com"
    ###
    
    #发送邮件
    def send_mail_txt(file_new):
        """发送邮件"""
        # 读取html报告文件内容
        print('正在发送中-------------------------')
        with open(file_new, 'rb') as f:
            mail_body = f.read()
    
        def _format_addr(s):
            name, addr = parseaddr(s)
            return formataddr((Header(name, 'utf-8').encode(), addr))
    
        # 1.文本
        msg = MIMEText(mail_body, 'plain', 'utf-8')
    
        #邮件参数传递
        from_addr =From_addr
        password =Password
        to_addr = To_addr
        cc_mail = 'xx@xxx.com'  #抄送人员,#to_addr+cc_mail
        smtp_server = Smtp_server
    
        # 邮件对象
        msg['From'] = _format_addr('测试负责人 <%s>' % from_addr)
        msg['To'] = _format_addr('管理员 <%s>' % to_addr)
        msg['Subject'] = Header('测试机', 'utf-8').encode()
        msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
    
        # 发送邮件
        server = smtplib.SMTP(smtp_server, 25)
        #server.set_debuglevel(1)   #打印信息
        server.login(from_addr, password)
        server.sendmail(from_addr, [to_addr], msg.as_string())
        server.quit()
        print("邮件已发出!注意查收。")
    
    #发送邮件
    def send_mail_html(file_new):
        """发送邮件"""
        # 读取html报告文件内容
        print('正在发送中-------------------------')
        with open(file_new, 'rb') as f:
            mail_body = f.read()
    
        #邮件内容封装
        def _format_addr(s):
            name, addr = parseaddr(s)
            return formataddr((Header(name, 'utf-8').encode(), addr))
    
        #邮件参数传递
        from_addr =From_addr
        password =Password
        to_addr = To_addr
        cc_mail = 'xx@xxx.com'  #抄送人员,#to_addr+cc_mail
        smtp_server = Smtp_server
    
        # html邮件正文
        msg = MIMEText(mail_body, 'html', 'utf-8')
    
        # 邮件对象
        msg['From'] = _format_addr('测试负责人 <%s>' % from_addr)
        msg['To'] = _format_addr('管理员 <%s>' % to_addr)
        msg['Subject'] = Header('测试机', 'utf-8').encode()
        msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
    
        # 发送邮件
        server = smtplib.SMTP(smtp_server, 25)
        #server.set_debuglevel(1)   #打印信息
        server.login(from_addr, password)
        server.sendmail(from_addr, [to_addr], msg.as_string())
        server.quit()
        print("邮件已发出!注意查收。")
    
    # 发送邮件,带附件
    def send_mail_file(file_new):
        """发送带附件的邮件"""
        # file=带文件,其他是待图片png格式
        # 读取html报告文件内容
        print('正在发送中-------------------------')
        with open(file_new, 'rb') as f:
            mail_body = f.read()
    
        # 邮件内容封装
        def _format_addr(s):
            name, addr = parseaddr(s)
            return formataddr((Header(name, 'utf-8').encode(), addr))
    
        # 邮件参数传递
        from_addr = From_addr
        password = Password
        to_addr = To_addr
        cc_mail = 'xx@xxx.com'  # 抄送人员,#to_addr+cc_mail
        smtp_server = Smtp_server
    
        #邮件正文是MIMEText
        body = MIMEText(mail_body, 'html', 'utf-8')
        msg=MIMEMultipart()
    
        # 邮件对象
        msg['From'] = _format_addr('测试负责人 <%s>' % from_addr)
        msg['To'] = _format_addr('管理员 <%s>' % to_addr)
        msg['Subject'] = Header('测试机', 'utf-8').encode()
        msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
    
        msg.attach(body)
        #MIMEBase标识附件的对象
        att=MIMEText(mail_body,'base64','utf-8')
        att["Content-Disposition"]='attachment;filename=%s'%file_new
        msg.attach(att)
    
        # 发送邮件
        server = smtplib.SMTP(smtp_server, 25)
        # server.set_debuglevel(1)   #打印信息
        server.login(from_addr, password)
        server.sendmail(from_addr, [to_addr], msg.as_string())
        server.quit()
        print("邮件已发出!注意查收。")
    
    if __name__=="__main__":
        file_new=r"F:/download/report/report.html"
        file_png=r"F:/download/test.png"
        send_mail_html(file_new)
        #发送文件
        send_mail_file(file_new)
        #发送图片
        #send_mail_file(file_png)
        #server
        file_body=r"F:/download/txt.txt"
        send_mail_txt(file_body)
  • 相关阅读:
    谷歌地图移动版(Google Mobile Map)试用(附部分Latitude试用)
    WordPress to Micolog转换工具
    Edge 705试用
    报警点(电子狗)模型探究
    低调发布上海和北京地图
    如何制作一份导航电子地图(上)
    读Google2009开发者大会地图开发文档有感
    照片处理工作流(缩放+GPS信息+水印+IPTC+EXIF,软件推荐)
    浅谈导航电子地图的组成和制作流程
    我的2010世博地图1.0版发布
  • 原文地址:https://www.cnblogs.com/lisa2016/p/12561174.html
Copyright © 2011-2022 走看看